第二个灵魂 发表于 2015-1-16 22:47:57

ASP.NET教程之ASP.NET 2.0挪动开辟之列表控件

听03很多师兄说主讲老师杭城方讲课很差就连旁听也没有去了)asp.net|控件<P>  概述

  在良多情形下,我们城市利用到列表控件来便利用户选择一些选项。比方在某网站上注册新用户时,一般会扣问你的性别是"男"仍是"女",这时候我们用单项按钮以供用户做出响应的选择。另有当你填写本人的家庭地点时,一般会利用到一个包括各省省名的下拉列表来供用户间接选择,如许能够削减用户的输出量。上述的这些单项按钮和下拉列表都在ASP.NET挪动程序中都是以列表控件的情势存在的。我们可使用列表控件来出现各类情势(单项、多选、下拉列表)的列表,以供用户选择和利用。可是在ASP.NET2.0挪动开辟工具包中,只要三个列表控件,分离为SelectionList、List和ObjectList控件。固然没有ASP.NET2.0中那末多范例的列表控件,可是我们却可使用SelectionList、List和ObjectList这三个列表控件完成单项、多选等几近一切的功效。在本系列文章中将切磋这三个控件的一些基础功效和利用办法,并申明这三个控件类似的地方及异同点。

  是SelectionList、List和ObjectList三个控件在类的承继上的干系:




  下面的三个列表控件中,SelectionList是最复杂的,可是它能够以各类分歧的范例举行出现,因而具有很年夜的天真度,以供分歧的需求利用使用的列表范例。同时由于SelectionList控件不撑持分页功效,以是在包括多个列表项的情形下,该控件就显得力所能及了。另有一点要必要重点申明的是,SelectionList是这三个列表控件中独一撑持多选的。并且该控件还能够以下拉列表的情势举行出现,也能够以单项和多选框的体例举行出现,固然这类出现格局必需要被挪动设备上的扫瞄器所承受。在一些WML扫瞄器上,只撑持一些特别的出现情势,比方单项和多选按钮,其实不撑持下拉列表这类出现情势。演示了下拉列表在分歧扫瞄器上出现时所存在的不同。


在上图所示的PocketIE扫瞄器上,列表控件是以下拉列表的情势出现的。而在Openwave的WML扫瞄器上,下拉列表范例的出现情势是不撑持的,为此在该扫瞄器中,是将列表中的各个列表项显现出来,供用户举行响应的选择。
<P>  List列表控件撑持分页功效,这就意味着它撑持列表项较多的列表。它只能够以项目标记列表或编号列表的情势举行出现(只需扫瞄器撑持便可)。除以外,别的的被SelectionList撑持的列表情势(比方下拉列表),在List中均没法完成。中List列表控件就是以编号列表的情势出现的,而且撑持分页功效。


List列表控件以编号列表的情势出现在页面上,并且撑持分页功效。

  在上述三个列表控件中最庞大确当属ObjectList控件了。SelectionList和List控件同意你利用服务器控件语法静态地声明列表项,可是ObjectList控件是没法接纳这类体例来增加列表项的,你必需在ObjectLis列表控件与响应的数据源绑定后,再经由过程代码将列表项增加到列表中。ObjectList控件同意一个列表项中同时显现多个字段,这是别的两个控件所不具有的,它们只同意每一个列表项只显现一个字段的信息。除此以外,ObjectList控件中的每一个列表项还能够和多个命令相干联,别的两个控件所不具有的功效。


ObjectList控件中,能够在每一个列表项中显现多个字段。这里同时显现了球队称号、输、赢和积分等字段。

每一个列表项能够和多个命令举行联系关系,页面下方的各个链接就是与列表项联系关系的命令,你能够选择分歧的命令,发生分歧的操纵

  下表归纳综合了上述三个控件的次要功效:

才能SelectionListListObjectList是不是能够以下拉列表、列表框、单项或多选按钮等范例在HTML扫瞄器长进行出现√是不是撑持多选√以项目标记列表或编号列表的情势举行出现√当列表包括较多的列表项时,是不是能够启用分页功效√√是不是能够经由过程服务器语法声明静态地天生列表项√√是不是能够与数据源绑定√√√在一个列表项中是不是能够同时显现多个字段√在选择一个列表项后是不是会触发响应的事务√(正文)√√每一个列表项是不是能够自界说相干联的命令√是不是撑持模板√√正文:SelectionList列表控件在选择一个列表项后,其本身是没法主动发生一个回发(postback)操纵的。你必需在包括该SelectionList列表控件的Form控件上安排一个Command控件,再由该Command控件将因列表选项产生改动的信息回发到服务器上,如许ASP.NET运转时就能够依据这些信息做出响应的处置,并将处置后的信息前往到挪动页面上。
<P>  接纳分歧的体例构建列表

  在入手下手探求每一个列表控件的详细用法时,我们起首来懂得一下上述三个控件的配合特征。SelectionList和List控件同意开辟职员界说静态地界说各个列表项,也就是我们能够在服务器控件语法中利用<Item>标签,来界说每一个列表项对应的文本信息和值信息,而静态的完成体例就是经由过程代码,创立和列表中的每一个列表项对应的System.Web.UI.MobileControls.MobileListItem工具,并将这些工具增加到列表控件的Items汇合中。因为每一个列表项都是事后设置好的,一切我们也称这类列表为静态列表。

  另有一种体例就是将列表控件与一个数据源举行绑定,因为该列表控件中的一切列表项所需的文本信息和值信息都读取自数据源,因而这些列表项都是依据这些信息静态天生。注重,上述的三个列表控件都撑持数据绑定的体例静态地天生列表。

  静态列表的完成

  前文提过,我们能够经由过程静态的体例完成列表。实在这类完成就是在服务器控件语法中利用<Item>标签来设置每一个列表项所需的文本信息和值信息。上面我们来经由过程一段代码来讲明怎样静态地完成一个列表。程序清单1是一个SelectionList控件的声明,我们但愿经由过程该列表控件来选择一个列表项。在这里我们将手机的品牌和型号分离作为列表项的文本信息和值信息,你能够在每一个<Item>标签中利用Text属性主动文本信息,利用Value属性指定值信息。

  程序清单1:

<mobile:SelectionListid="SelectionList1"runat="server">
 <ItemText="Dopoda"Value="P800"/>
 <ItemText="Motorola"Value="A1200"/>
 <ItemText="Nokia"Value="N70"/>
 <ItemText="Samsung"Value="E638"/>
</mobile:SelectionList>
  我们将在"SelectionList列表控件详解"这一章中经由过程详细的实例来使用程序清单1中的代码,在这只是扼要地先容下完成静态列表的办法。实在我们还能够以一种可视化的体例来完成静态列表,固然这要依托VisualStudio2005开辟情况的撑持。在VisualStudio2005中,供应了一个十分有效的属性天生器,使得你能够很便利地界说一个静态列表。只需你选择列表控件的智能标签,尔后再选择"属性天生器"链接,就会弹出"属性天生器"对话框。我们能够经由过程该对话框以可视化的体例发生程序清单1中的代码,如所示。



  我们能够在该对话框中经由过程"创立新项"按钮来发生一个新的列表项,尔后在这个列表项对应的"项文本"和"值"文本框处填写好列表项的文本信息和值信息,就创立好了一个列表项。假如你要调剂各个列表项之间的序次,能够点击高低箭头按钮来做出响应的调剂。在"属性天生器"对话框的"惯例"选项卡中,用户能够选择列表控件在页面上的出现情势。比方SelectionList列表控件撑持下拉列表、列表框、单项按钮、复选按钮和多选列表框等几种情势,开辟职员能够依据实践的必要选择符合的范例,如所示。



  ASP.NET运转时是经由过程上面所形貌的体例来剖析服务器控件语法中的各个列表项的。在你利用静态的体例构建一个列表时,ASP.NET实践上是针对这个列表中的每一个列表项,都创立一个System.Mobile.UI.MobileControls.MobileListItem工具,并利用<Item>标签中的Text和Value属性指定的文本信息和值信息对响应的MobileListItem工具举行初始化,尔后再将初始化后的MobileListItem工具增加到一个System.Mobile.UI.MobileControls.MobileListItemCollection汇合工具中。我们能够在代码中经由过程SelectionList或List类的Items属性来会见这个MobileListItemCollection汇合工具。现实上,程序清单1和程序清单2的功效是不异的,两种体例都能够天生静态列表,只不外程序清单1埋没了静态列表的底层的完成,更简单操纵而已。

  程序清单2

protectedvoidPage_Load(objectsender,EventArgse)
{
 if(!IsPostBack)
 {
  SelectionList1.Items.Add(newMobileListItem("Dopoda","P800"));
  SelectionList1.Items.Add(newMobileListItem("Motorola","A1200"));
  SelectionList1.Items.Add(newMobileListItem("Nokia","N70"));
  SelectionList1.Items.Add(newMobileListItem("Samsung","E638"));
 }
}
<P>  将列表控件与数据汇合举行绑定

  前文提过,除利用静态的体例界说列表外,我们还能够将SelectionList、List和ObjectList三个列表控件与特定的数据源举行绑定。这些列表控件撑持两品种型的数据源:System.Collections.IEnumerable和System.ComponentModel.IListSource。.NetFramework中的很多汇合类都是完成了IEnumerator接口,为此这些类都撑持复杂的列举功效。至于这些类的详细实例有位于System.Collections定名空间的Array、ArrayList、Hashtable和ListDictionary,还要一些和控件相干联的汇合工具(比方后面的代码中利用到的MobileListItemCollection)。假如你要检察一切完成了IEnumerator接口的汇合类的话,请自行参考MSDN匡助文档。

  你还能够将列表控件与IListSource数据汇合举行绑定。System.Data定名空间中的两个类完成了IListSource这类接口,这两个类就是我们在ADO.NET中常常利用的DataSet和DataTable。我们晓得这两个类是相干联的,由于DataSet相称于一个由多个DataTable构成的汇合。DataSet类是ADO.NET构架中的一个次要组件,而且DataSet还相称于在数据库中所检索到的数据在内存中的一个缓存。当列表控件的数据源为一个DataSet工具时,由于一个DataSet大概包括多个DataTable工具,以是我们还必需利用SelectionList.DataMember属性切实地指定利用谁人DataTable工具来添补列表项。注重,当你利用一个IEnumerator数据源时,是没有需要指定DataMember属性的。至于DataSet在ASP.NET挪动程序中的详细使用,将在别的章节中举行先容。

  当你必要以数据绑定的体例静态地完成一个列表的话,那末应当将该列表控件的DataSource属性指定一个相干联的数据源。假如数据源是一个DataSet工具的话,那末还必要利用DataMember属性切实地指定用谁人DataTable添补列表项。关于SelectionList和List控件来讲,你可使用DataTextField和DataValueField两个属性分离指定命据源中的两个字段,列表控件会主动将这两个字段的内容作为各个列表项的文本信息和值信息。而ObjectList列表控件是利用LabelField属性来指定命据源中的一个字段,使得该字段中的内容使用到各个列表项中举行出现,至于每一个列表项的别的字段内容,你能够在ObjectList的具体信息视图页长进行检察。

  我们能够以代码的体例或服务器控件语法的体例完成上述数据绑定属性的设置。比方,你但愿在一个SelectionList列表控件中利用Manufacturer字段作为各列表项的文本信息,且Model字段作为各列表项的值信息。那末其设置的办法如程序清单3所示:

  程序清单3

<mobile:SelectionListID="SelectionList1"Runat="server"SelectType="MultiSelectListBox"DataTextField="Manufacturer"DataValueField="Model">
</mobile:SelectionList>
  为了猎取数据源中对应字段的内容,我们还必要界说一个类,使得每一个列表项都能够读取响应的文本信息和值信息。

  程序清单4

publicclassMobileTelephone
{
 privateStringmanufacturer,model;
 publicMobileTelephone(Stringmanufacturer,Stringmodel)
 {
  this.manufacturer=manufacturer;
  this.model=model;
 }

 publicStringManufacturer{get{returnthis.manufacturer;}}
 publicStringModel{get{returnthis.model;}}
}
  然后,在Page_Load事务处置函数中,创立一切的数据项并将其增加到一个ArrayList工具中。最初就是设置列表控件的DataSource属性了,在这里我们将DataSource指定为这个ArrayList工具。完成上述的步骤再挪用DataBind办法,如许就将列表控件和数据源举行绑定了。

  程序清单4

protectedvoidPage_Load(objectsender,EventArgse)
{
 if(!IsPostBack)
 {
  ArrayListarray=newArrayList();
  array.Add(newMobileTelephone("Dopoda","P800"));
  array.Add(newMobileTelephone("Motorola","A1200"));
  array.Add(newMobileTelephone("Nokia","N70"));
  array.Add(newMobileTelephone("Samsung","E638"));
  SelectionList1.DataSource=array;
  SelectionList1.DataBind();
 }
}
  利用上述代码的完全示例将在详细切磋每一个列表控件时会使用到。

  提醒:DataBind办法关于数据绑定来讲是相当主要的,良多开辟职员常常健忘挪用这个办法,乃至列表控件不显现任何列表项。我们可使用两种办法来利用DataBind办法,一种就是在每一个要举行数据绑定的列表控件上独自利用DataBind办法,如程序清单4所示。你还能够接纳一种与日俱增的办法,那就是利用MobilePage.DataBind办法(在程序清单4中,利用this.DataBind()替换SelectionList1.DataBind(),这里的this代表的就是MobilePage)。如许在页面上存在多个数据绑定的列表控件时,仅需利用一个this.DataBind()办法就能够完成一切列表控件和数据源的绑定,而无需为每一个完成了数据绑定的列表控件都挪用一次DataBind办法。
因为二次编译器太复杂,那么建议只是在安装程序的时候编译一次,而不类似java那样运行就编译。并且我觉得,一次痛苦,总比多次低效率要舒服多了。

不帅 发表于 2015-1-19 23:51:14

那么,ASP.Net有哪些改进呢?

admin 发表于 2015-1-27 05:32:22

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。

只想知道 发表于 2015-2-5 00:11:36

网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!

再现理想 发表于 2015-2-10 23:47:22

平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。

小妖女 发表于 2015-3-1 17:55:15

市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。

莫相离 发表于 2015-3-10 21:39:56

如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。

小女巫 发表于 2015-3-17 10:32:24

是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。

金色的骷髅 发表于 2015-3-24 07:35:19

在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
页: [1]
查看完整版本: ASP.NET教程之ASP.NET 2.0挪动开辟之列表控件