日期:2010-12-23  浏览次数:20505 次

  概述

  在很多情况下,我们都会使用到列表控件来方便用户选择一些选项。例如在某网站上注册新用户时,通常会询问你的性别是"男"还是"女",这时我们用单项按钮以供用户做出相应的选择。还有当你填写自己的家庭地址时,通常会使用到一个包含各省省名的下拉列表来供用户直接选择,这样可以减少用户的输入量。上述的这些单项按钮和下拉列表都在ASP.NET移动程序中都是以列表控件的形式存在的。我们可以使用列表控件来呈现各种形式(单项、多选、下拉列表)的列表,以供用户选择和使用。但是在ASP.NET 2.0移动开发工具包中,只有三个列表控件,分别为SelectionList 、List和ObjectList 控件。虽然没有ASP.NET 2.0中那么多类型的列表控件,但是我们却可以使用SelectionList 、List和ObjectList这三个列表控件实现单项、多选等几乎所有的功能。在本系列文章中将探讨这三个控件的一些基本功能和使用方法,并说明这三个控件相似之处及异同点。

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

ASP.NET2.0移动开发之列表控件
图1


  上面的三个列表控件中,SelectionList是最简单的,但是它可以以各种不同的类型进行呈现,因此具有很大的灵活度,以供不同的需求使用应用的列表类型。同时因为SelectionList控件不支持分页功能,所以在包含多个列表项的情况下,该控件就显得力不从心了。还有一点要需要重点说明的是,SelectionList是这三个列表控件中唯一支持多选的。而且该控件还可以以下拉列表的形式进行呈现,也可以以单项和多选框的方式进行呈现,当然这种呈现格式必须要被移动设备上的浏览器所接受。在一些WML浏览器上,只支持一些特殊的呈现形式,例如单项和多选按钮,并不支持下拉列表这种呈现形式。图2演示了下拉列表在不同浏览器上呈现时所存在的差别。

ASP.NET2.0移动开发之列表控件ASP.NET2.0移动开发之列表控件
图2 在上图所示的PocketIE浏览器上,列表控件是以下拉列表的形式呈现的。而在Openwave的WML浏览器上,下拉列表类型的呈现形式是不支持的,为此在该浏览器中,是将列表中的各个列表项显示出来,供用户进行相应的选择。

  List列表控件支持分页功能,这就意味着它支持列表项较多的列表。它只可以以项目符号列表或编号列表的形式进行呈现(只要浏览器支持即可)。除了之外,其它的被SelectionList支持的列表形式(例如下拉列表),在List中均无法实现。图3中List列表控件就是以编号列表的形式呈现的,并且支持分页功能。

ASP.NET
图3 List列表控件以编号列表的形式呈现在页面上,而且支持分页功能。


  在上述三个列表控件中最复杂的当属ObjectList 控件了。SelectionList和List控件允许你使用服务器控件语法静态地声明列表项,但是ObjectList控件是无法采用这种方式来添加列表项的,你必须在ObjectLis列表控件与相应的数据源绑定后,再通过代码将列表项添加到列表中。ObjectList 控件允许一个列表项中同时显示多个字段,这是其它两个控件所不具备的,它们只允许每个列表项只显示一个字段的信息。除此之外,ObjectList 控件中的每个列表项还可以和多个命令相关联,其它两个控件所不具备的功能。

ASP.NET2.0移动开发之列表控件
图4 ObjectList 控件中,可以在每个列表项中显示多个字段。这里同时显示了球队名称、输、赢和积分等字段。
ASP.NET2.0移动开发之列表控件
图5 每个列表项可以和多个命令进行关联,页面下方的各个链接就是与列表项关联的命令,你可以选择不同的命令,产生不同的操作


  下表概括了上述三个控件的主要功能:

能力SelectionListListObjectList
是否可以以下拉列表、列表框、 单项或多选按钮等类型在HTML浏览器上进行呈现  
是否支持多选   
以项目符号列表或编号列表的形式进行呈现  
当列表包含较多的列表项时,是否可以启用分页功能 
是否可以通过服务器语法声明静态地生成列表项 
是否可以与数据源绑定
在一个列表项中是否可以同时显示多个字段  
在选择一个列表项后是否会触发相应的事件√(注释)
每个列表项是否可以自定义相关联的命令  
是否支持模板  
注释:SelectionList列表控件在选择一个列表项后,其自身是无法自动产生一个回发(postback)操作的。你必须在包含该SelectionList列表控件的Form控件上放置一个Command控件,再由该Command控件将因列表选项发生改变的信息回发到服务器上,这样ASP.NET运行时就可以根据这些信息做出相应的处理,并将处理后的信息返回到移动页面上。

  采用不同的方式构建列表

  在开始探究