摘要:

    很多人可能在以前的ASP.NET版本中就已经用到ListView控件了,但是那个应该是第三方的控件。这回Microsoft将在ASP.NET中引入ListView控件,这个控件将DataList, FormView, 和 GridView 控件的功能集成到一个控件中。同DataListRepeater控件一样,他通过模板和样式表来格式化你所绑定的数据并呈现输出,然而他又能支持排序,更新,分页和删除等。本文将讲述ListView的一些基础知识,下面我们一起来看看吧!
 

绑定数据:

    ASP.NET中的每一个数据控件都能够进行绑定,ListView控件提供两种方法进行数据绑定。

<!--[if !supportLists]--><!--[endif]-->

<!--[if !supportLists]-->    1.  <!--[endif]-->DataSourceID属性来绑定数据,这里需要用到的是数据源控件,这样ListView就能够像GridView一样支持数据源控件的分页,排序,更新和删除等。

 

<!--[if !supportLists]-->    2.  <!--[endif]-->通过DataSource属性来进行绑定,这个一般都用与编程绑定,这就需要我们通过代码来进行分页,排序,删除和更新等,这样就支持自定义分页等等,适合大量数据时使用。

模板:

    以下是创建所能够涉及到的模板,有很多中选择,可以是单独的一项,也可以分组。

    LayoutTemplate

    根模板在此模板中定义对象容器,我们可以在此定义如table,div和span标签等,而把内容定义在ItemTemplates,GroupTemplateDataPager等中。在例子中我们将讲述以下怎样应用这些模板。

    ItemTemplate

    这个模板只要有用过Repeater等控件的人都知道,它可以循环呈现数据。

    ItemSeparatorTemplate

    分割模板。

    GroupTemplate

    分组定义数据,我们可以在此模板中定义如table row(tr),div或span等,而把数据内容定义在ItemTemplate 和 EmptyItemTemplate模板中。

    GroupSeparatorTemplate

    分组分割模板。

    EmptyItemTemplate

    当应用GroupSeparatorTemplate模板时用于呈现无内容的模板,例如:如果我们将GroupItemCount设置为10,而我们的实际数据只有8条,当呈现内容是就会有两条内容呈现EmptyItemTemplate模板所定义的内容。

    EmptyDataTemplate

    当数据源为空时所要显示的内容。

    SelectedItemTemplate

    被选择时呈现的模板。

    AlternatingItemTemplate

    层叠替换模板,定义的内容和ItemTemplate一样。

    EditItemTemplate

    和GridView一样,编辑时呈现的内容。

    InsertItemTemplate

    插入模板。
 

创建ItemTemplate:

    其实控件的使用都差不多,用多了也就明白了,最主要的是用于实践。创建ItemTemplate很简单,从中我们也可以看到LayoutTemplate的应用,在Repeater中头尾要分别定义在Header和Footer中,而ListView直接定义可谓是一大进步啊。

ItemTemplate

 

利用ListView分页:

    其实还是要靠自定义分页这样才能对大数据进行检索,如果直接用内置的效率将是非常地的,我们这里先看看内嵌的分页功能。

Pager

    后台代码:

 

1  protected   void  CurrentRowTextBox_OnTextChanged( object  sender, EventArgs e)
2  {
3      TextBox t  =  (TextBox)sender;
4      DataPager pager  =  (DataPager)EmployeesListView.FindControl( " EmployeesDataPager " );
5      pager.SetPageProperties(Convert.ToInt32(t.Text)  -   1 , pager.PageSize,  true );
6  }
7 

 

排序:

     利用CommandArgument属性的定义来对数据进行排序。代码如下:
Sorting
     后台代码:
 1  protected   void  EmployeesListView_OnSorting( object  sender, ListViewSortEventArgs e)
 2  {
 3       if  (e.SortExpression.Trim()  ==   "" ) {  return ; }
 4 
 5       string  direction  =   "" ;
 6       if  (ViewState[ " SortDirection " !=   null )
 7          direction  =  ViewState[ " SortDirection " ].ToString();
 8 
 9       if  (direction  ==   " ASC " )
10          direction  =   " DESC " ;
11       else
12          direction  =   " ASC " ;
13 
14      ViewState[ " SortDirection " =  direction;
15 
16       string [] sortColumns  =  e.SortExpression.Split( ' , ' );
17       string  sortExpression  =  sortColumns[ 0 +   "   "   +  direction;
18       for  ( int  i  =   1 ; i  <  sortColumns.Length; i ++ )
19          sortExpression  +=   " "   +  sortColumns[i]  +   "   "   +  direction;
20      e.SortExpression  =  sortExpression;
21  }
22 

总结:

     我们只要能够把其中一个数据控件用的很熟悉,就知道其他控件的基本用法了,掌握了他的事件驱动,再用其他的控件都是大同小异没什么差别。本文只是为了介绍这个控件,由于在Orcas Beta1中还没有这个控件的出没,无意中我看到了介绍此控件的文章,所以写写加上翻翻就成就了此文。