当前位置导航:炫浪网>>网络学院>>网页制作>>ASP.NET教程

ASP.NET 3.5中使用新的ListView控件

        ASP.NET中新的ListView控件为显示和CURD数据库操作提供了基于模板的布局,使之成为一项极好的方式,建立以数据为中心的Web应用程序。

       当你编写以用户为中心的应用程序时,总需要某种形式的数据集,起码来说,你需要从一个数据源如关系数据库或XML文件检索数据,在显示给用户之前先要进行格式化,尽管ASP.NET之前的版本就提供了以数据为中心的显示控件如GridView,这些控件缺乏专业Web开发人员需要的可自定义和可扩展特性,为了解决这个问题,ASP.NET3.5提供了一个新的控件ListView,它提供了非常优秀的自定义和扩展特性,使用这些特性,你可以以任何格式显示数据,使用模板和样式,同时用最少的代码执行CURD(创建、读取、更新、删除)操作。

本文主要集中于使用新的ListView控件时数据访问步骤,同时还包括高级特性如编辑数据和处理事件。

ListView控件入门

ASP.NET提供的大部分数据绑定控件都是使用额外的标记自动封装显示数据,举例来说,GridView控件在一个HTML表格( )中显示它的数据,每条记录显示一行(  ),每个字段显示为一个单元格(  ),虽然你可以使用TemplateField组件自定义GridView的外观,但GridView的输出仍然是限制在一个table组件中的,但有时候你想要完全控制由数据绑定控件产生的HTML标记的外观,这正是ListView控件的优势,ListView控件不是使用额外的标记来封装它的输出内容,而是靠你指定的精确的HTML描述,使用ListView控件内置的模板就可以指定精确的标记,表1列出了ListView控件支持的模板。

模板
 用途
 
AlternatingItemTemplate

交替项目模板
 用不同的标记显示交替的项目,便于查看者区别连续不断的项目
 
EditItemTemplate

编辑项目模板
 控制编辑时的项目显示
 
EmptyDataTemplate

空数据模板
 控制ListView数据源返回空数据时的显示
 
EmptyItemTemplate

空项目模板
 控制空项目的显示
 
GroupSeparatorTemplate

组分隔模板
 控制项目组内容的显示
 
GroupTemplate

组模板
 为内容指定一个容器对象,如一个表行、div或span组件
 
InsertItemTemplate

插入项目模板
 用户插入项目时为其指定内容
 
ItemSeparatorTemplate

项目分隔模板
 控制项目之间内容的显示
 
ItemTemplate

项目模板
 控制项目内容的显示
 
LayoutTemplate

布局模板
 指定定义容器对象的根组件,如一个table、div或span组件,它们包装ItemTemplate或GroupTemplate定义的内容。
 
SelectedItemTemplate

已选择项目模板
   指定当前选中的项目内容的显示最关键的两个模板是LayoutTemplate和ItemTemplate,正如名字暗示的那样,LayoutTemplate为ListView控件指定了总的标记,而ItemTemplate指定的标记用于显示每个绑定的记录,例如:下面的代码显示了在ListView中由HTML table控制的一串项目。
 
  在前面的代码中,LayoutTemplate标记内的  标记的ID是设置项目占位符(itemPlaceHolder),它告诉ListView通过内的ItemTemplate产生的内容要放到什么地方,这就是为什么你需要单独定义LayoutTemplate和ItemTemplate模板的原因。
 
  一个简单的数据绑定的例子你已经看到LisView控件支持的多个模板了,下一步是要创建一个简单的web站点,名字就叫做ListViewExample(你可以从http://assets.devx.com/sourcecode/38579_tt_mainsource.zip下载该站点的示例代码),创建好web站点后,选择Web站点?添加新项目,添加一个新的ASP.NET页面,名字命名为SimpleListView.aspx(见清单1),这个页面将使用ListView控件从AdventureWorks示例数据库中的Product表显示产品数据。
 
  清单1.ListView控件示例清单http://www.w3.org/1999/xhtml"> DataSourceID="productSource" DataKeyNames="ProductID"> style="width:460px"> PreviousPageText="<——" NextPageText="——>" /> Product ID : Text='' /> Name : Text='' /> Product Number : runat="server" Text='' />
 
 --------------------------------------------------------
 ------------------
 
  There are no products!
 
  DataSourceMode="DataSet" ConnectionString="" SelectCommand="SELECT ProductID,Name,ProductNumber,Color,ListPrice FROM Production.Product">在清单1中,SqlDataSource通过设置ConnectionString 和SelectCommand 属性控制从AdventureWorks数据库的Product表中检索数据,ConnectionString属性通过一个ASP.NET表达式从web.config文件获取连接字符串,在我的测试机上,连接字符串定义在web.config中,如:connectionString="server=localhost;uid=sa;pwd=thiru;database=AdventureWorks;"/>设置好SqlDataSource属性后,下一步是通过ListView控件显示数据,下面是在LayoutTemplate模板中的标记:style="width:460px"> PreviousPageText="<——" NextPageText="——>" />
 LayoutTemplate模板定义了ListView控件输出内容的容器,除了在ListView控件顶层定义了table外,LayoutTemplate模板还定义了,它为ListView控件提供了分页功能,DataPager让你可以为任何数据绑定控件实现IpageableItemContainer进行数据分页并显示导航控制。

有两种方法使数据分页(DataPager)和数据绑定(data-bound)联合使用:

1、设置DataPager 的PagedControlID属性为data-bound的名字。
2、将DataPager置于data-bound层次体系之下,对于ListView控件,你可以将DataPager置于LayoutTemplate组件内。

设置DataPager的PageSize属性,它控制每页显示的数据行数,你也可以在页面提交到服务器时通过设置QueryStringField属性实现。

在DataPager内,你指定NumericPageField模板,它可以让用户输入一个页号,然后按照页号进行跳转,如:

      PreviousPageText="<--"
NextPageText="-->" />

ItemTemplate组件为每个记录的明细提供了标记。图1显示了在浏览器中导航到该页面的输出。

 

图1.ListView示例:通过数据绑定ListView控件到SqlDataSource控件检索Product表中部分数据产生的输出


用ListView控件编辑数据

正如你所看到的,使用ListView控件显示数据相对要直接得多,但你还可以让用户在ListView中直接编辑数据,添加一个新页面ListViewEditExample.aspx,它的代码如清单2所示。

清单2.编辑ListView

 

http://www.w3.org/1999/xhtml">

 

 

 

DataKeyNames="DepartmentID" runat="server"
OnItemUpdated="deptsView_ItemUpdated"
OnPagePropertiesChanged="deptsView_PagePropertiesChanged">

runat="server" id="tblProducts">
              
 Name
 Group Name
 Action
 

 
 

PageSize="3">

        ShowLastPageButton="True" FirstPageText="|<< "
LastPageText=" >>|" NextPageText=" > "
PreviousPageText=" < " />

 


           

Text='' />


Text='' />


        CommandName="Edit" />

 


           

Text=''
MaxLength="50" />

 

 

CommandName="Update" Text="Update" />
CommandName="Cancel" Text="Cancel" />

 


ConnectionString=""
SelectCommand="SELECT [DepartmentID],[Name],[GroupName] FROM
HumanResources.Department" UpdateCommand="UPDATE
HumanResources.Department SET Name = @Name,
GroupName = @GroupName WHERE DepartmentID = @DepartmentID">


    Font-Bold="true" />

 

 

 

清单2的代码说明了如何使用EditItemTemplate组件在编辑模式下生成内容,

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接