• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

asp.net学习之GridView

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

显示表格数据是软件开发中的一个周期性任务。ASP.NET 提供了许多工具来在网格中显示表格数据,例如 GridView 控件。通过使用 GridView 控件,您可以显示、编辑和删除多种不同的数据源(例如数据库、XML 文件和公开数据的业务对象)中的数据。

1. GridView数据绑定基础

    GridView大部份场合下都是用来绑定数据源,进行数据的显示。一般情况下,可以绑定到SqlDataSource控件,DataTable对象,DataView对象..也可以绑定到列表对象。
   GrdiView提供了两种数据方式的绑定:DataSourceID与DataSource
     ● 使用 DataSourceID 属性进行数据绑定,此选项使您能够将 GridView 控件绑定到数据源控件。使用 DataSourceID 属性绑定到数据源时,GridView 控件支持双向数据绑定。除可以使该控件显示返回的数据之外,还可以使它自动支持对绑定数据的更新和删除操作。
     ● 使用 DataSource 属性进行数据绑定,此选项使您能够绑定到包括 ADO.NET 数据集和数据读取器在内的各种对象。此方法需要为所有附加功能(如排序、分页和更新)编写代码。
   GridView会自动为一个布尔类型字段呈现复选框。
例1:GridView绑定到一个List对象中

 

 

2. 获取GridView被选中行的信息。

    2.1 GridView有两个属性:一个叫AutoGenerateSelectButton,一个叫DataKeyNames。
          AutoGenerateSelectButton设置为true时,GridView就会出现一个选择键。而DataKeyNames则表示获取或设置一个数组,该数组包含了显示在
GridView 控件中的项的主键字段的名称。当用户点击选择时,就可以取出主键字段的值。取GridView选中的值是通过GridView的SelectedValue属性来实现的。
例2:点击选择获得主键的值


    当然,如果以上设置DataKeyName为Description,则点击选择后Label显示的为选择行的Description值。
例3:

 


    2.2 除了SelectVaule可以获得被选中行的信息以外,还有几个属性可以获得被选中行的信息
      ● SelectedDataKey : 返回被选中行相关的DataKey对象。*有多个数据键时很有用*
      ● SelectedIndex : 返回选中行的索引(从零计算)
      ● SelectedValue : 返回选中行的数据键值
      ● SelectedRow : 返回被选中的行,返回GridViewRow对象。

    2.3 为DataKeyNames绑定多个关键值
          为DataKeyNames绑定多个关键值很简单,字符串内各键值以,分隔就可以了,如:

<asp:GridView id=”grdEmployees” DataSourceID=”srcEmployees”
       
DataKeyNames=”LastName,FirstName” AutoGenerateSelectButton=”true” Runat=”server” />

           在绑定多个关键值的情况下,取值就不是使用SelectedValue了,而是使用SelectedDataKey属性,如:

<asp:SqlDataSource id=”srcEmployeeDetails” ConnectionString=”<%$ ConnectionStrings:Employees %>
         SelectCommand=”SELECT * FROM Employees  WHERE FirstName=@FirstName AND LastName=@LastName” Runat=”server”>
   
<SelectParameters>

       
<asp:ControlParameter Name=”FirstName” ControlID=”grdEmployees” PropertyName=’SelectedDataKey(“FirstName”)’ />

       
<asp:ControlParameter Name=”LastName” ControlID=”grdEmployees” PropertyName=’SelectedDataKey(“LastName”)’ />

   
</SelectParameters>

</asp:SqlDataSource>

    2.4 GridView的DataKey属性
          DataKey表示的是获取一个
DataKey 对象集合,这些对象表示 GridView 控件中的每一行的数据键值。
              public virtual
DataKeyArray DataKeys { get; }
          怎么使用DataKey呢?如果知道要取GridView1第六行的DataKey键值,可以这样写:
              Object key = GridView1.DataKey[5].Value;
          如果组键有多个键值,可以这样取:
              Object key = GridView1.DataKey[5].Values("LastName");
          如果在SelectedIndexChanged事件中,可以这样写:
              int index = CustomersGridView.SelectedIndex;
              Message.Text =  CustomersGridView.DataKeys[index].Value.ToString() ;

 

备注:关于DataKey对象
DataKey 类用于表示数据绑定控件中某个记录的主键。记录的主键可以由数据源中的一个或多个字段组成。尽管 DataKey 类不是集合,但它可以存储多个键字段值。当调用 DataKey 类的某个构造函数时,将填充键字段值。可以通过以下方法从 DataKey 对象中检索键字段值:

    *      使用 DataKey.Item[Int32] 属性检索 DataKey 对象中特定索引位置的键字段值。
    *      使用 DataKey.Item[String]属性检索特定字段的键字段值。
    *      使用 Value 属性检索 DataKey 对象中索引 0 位置的键字段值。当主键只包含一个字段时,此属性常用作检索记录键值的快捷方式。
    *      使用 Values 属性创建可用于循环访问键字段值的 IOrderedDictionary 对象。

通常,当设置了数据绑定控件的 DataKeyNames 属性时,控件自动生成 DataKey 对象。DataKey 对象包含 DataKeyNames 属性中指定的一个或多个键字段的值。一次显示一个记录的数据绑定控件(如 DetailsView 或 FormView)通常在它的 DataKey 属性中存储所显示的当前记录的 DataKey 对象。一次显示多个记录的数据绑定控件(如 GridView)通常在 DataKeyArray 集合中存储它的每个记录的 DataKey 对象。然后,DataKeyArray 集合将存储在控件的 DataKeys 属性中。


 

3. GridView数据排序

     3.1 如何启用排序
      启用GridView的AllowSorting属性可以对呈现的数据行进行排序。排序支持顺序和逆序排序。多次点击,排序就在顺序和逆序间切换
      【注:显式指定GridView控件列时(例如绑定列),需要指定此列的SortExpression值才能支持排序。否则,点击此列标题不会对数据排序,切记切记。】
    3.2 AJAX排序
       声明GridView的EnableSortingAndPagingCallbacks属性为TRUE就可以启用AJAX排序。AJAX排序不会把整个页面都递交到服务器上。只有GridView才会被更新
      【注:在GridView中使用AJAX,就不能使用TemplateFields,也不会显示Selected按钮】
   
3.3 定义排序界面外观
       通过响应GridView的RowDataBound事件就可以定制排序链接的外观
例4:自定义排序标题外观

 


    3.4 用代码控制进行排序
         可以在代码中调用GridView.Sort()方法来对GridView排序:
           
public virtual void Sort( string sortExpression, SortDirection sortDirection);
例5:后台代码控制排序:

/>

 

 

4.GridView的分页

     一般情况下,把GridView的AllowPaging属性设置成TURE就可以支持分页。通过修改PageSize属性可以指定每页显示的记录数。默认为10
     设置EnableSortingAndPagingCallBacks为true就可以使用AJAX进行分页。
   4.1 自定义分页
       默认情况下,GridView会在网格底部显示页码。通过修改GridView的PagerSettings属性可以修改分页界面
       PagerSettings 获取对
PagerSettings 对象的引用,使用该对象可以设置 GridView 控件中的页导航按钮的属性。
         public virtual
PagerSettings PagerSettings { get; }
       关于GridView分页中的导航设定,分别涉及到三个属性:
         ●
PagerSettings: PagerSettings 对象的引用,使用该对象可以设置 GridView 控件中的页导航按钮的属性。
         ●
PagerStyle:获取对 TableItemStyle 对象的引用,使用该对象可以设置 GridView 控件中的页导航行的外观。
         ●
PagerTemplate:获取或设置 GridView 控件中页导航行的自定义内容。
    4.2 PagerSettings对象
        上一节提到PagerSettings属性可以设置导航按钮的属性,其返回的是一个PagerSettings对象。这个对象又具备一些重要属性,真是属性套属性啊。
           ● FirstPageImageUrl : 第一个按钮显示的图像URL
           ● FristPageText :第一页按钮显示的文字 。
           ● LastPageImageUrl、LastPageText、NextPageImageUrl、NextPageText、PreviousPageImageUrl、PreviousPageText :介绍略
           ● Mode:分页显示模式,支持NextPrevious、NextPreviousFirstLast、Numeric、NumbericFirstLast
           ● PagetButtonCount:页按钮的数量,
                如果数据多的场合,显示所有的页码链接非常不现实,设定PagetButtonCount,最多小面显示多少个页码,其它的用省略号表示。
           ● Position:分页界面的显示位置
           ● Visible:是否显示
例6:自定义分页导航

 


     4.3 使用模板显示导航页:PageTemplate属性
         使用PageTemplate属性,可以自定义导航显示的样式,导航栏可以加入任何asp.net服务器控件(button,ImageButton,LinkButton)。使用PageTemplate,按以下语法使用

<asp:GridView>
  
<PagerTemplate>ITemplate</PagerTemplate>
</asp:GridView>

         一个 System.Web.UI.ITemplate,包含页导航行的自定义内容。默认值为 null,表示未设置此属性。
         在PageTemplate加入的Button控件,把CommandName属性设定为Page,CommandArgument属性设为以下四个值之一,就可以进行页面导航:
            ● Next:导航至下一页
            ● Prev:导航至上一页
            ● First:导航至首页
            ● Last:导航至末页
            ● Interger:导航至指定页码
        不止可以加入Button型控件,也可以加入BulletedList,DropdownList,Menu等控件,进行导航,点击相应的Item时,只要设定与之对应gridView.PageIndex即可。GridView会自动帮你链接到相应的页面。
例7:使用PageTemplate进行导航,使用Menu控件和Button控件结合进行导航

>


小技巧:可以使用@page指令中的MaintainScrollPositionOnPostback属性,通过它可以使页面无论在什么时候回发都定位到相同的位置。

5.编辑数据

   5.1.空数据如何显示
          默认的,没有任何结果从数据源返回的时候,GridView是不进行显示的,这时,可以通过GridView的两个属性来显示没有数据时应该显示的内容。
            ● EmptyDataText:获取或设置在

<asp:GridView>
<EmptyDataTemplate>ITemplate</EmptyDataTemplate>
</asp:GridView>

 例9:EmptyDataTemplate属性设定

>


     5.2 格式化GridView控件
            GridView有丰富的格式化属性,这些属性可以修改GridView的外观。GridVie本身有CssClass属性,但也暴露了以下Style的属性,Style对象也具有CssClass属性
          ● AlternationRowStlye: 可以设置交替行的外观
         
● FooterStyle:可以设置脚注行的外观 
         
● HeaderStyle:可以设置标题行的外观 
          ● PagerStyle:可以设置导航页的外观
          ● RowStyle: 可以设置交替行的外观,与AlternationRowStlye交互
          ● SelectedRowStyle: 设置选中行的外观
例10:使用CSS控制Gridview的外观

        除了以上属性外,还有几个比较有用的格式属性,如:
            ● GridLines: 网格边框属性,可以取值为Both,Vertical,Horizontal和None
            ● ShowFooter: 如果为True,则将在GrdiView的底部输出脚注行
            ● ShoeHeader: 如果为TRUE,则将输出标题行

    5.3 GridView中的ViewState
         默认场合,GridView控件保存呈现在ViewState中的所有行和列的值,这些数据都保存在一个隐藏表单字段中。
         使用ViewState的好处是GridView不需要每次翻页时都去数据库获取同样的记录集合,而只要页面初次加载就可以了(!IsPostback)
         但是,数据量大的时候,使用ViewState也会成为负担,所以禁用ViewState非常有必要
         所以,设置GridView的EnableViesState属性为FALSE就可以禁用ViewState。

6. GridView控件中使用字段(FieldType)

    请详见以下文章: http://www.cnblogs.com/shipfi/archive/2009/10/17/1585219.html

7. GridView控件的事件 

    请详见以下文章: http://www.cnblogs.com/shipfi/archive/2009/10/18/1585453.html

8.扩展GridView

    详见以下文章:http://www.cnblogs.com/shipfi/archive/2009/10/18/1585647.html

9. 一些常用技巧

    ● 使用列汇总:有时需要在数据列的底部显示某字段的汇总信息,汇总信息可以在FooterRow中显示,通过DataBound事件来进行列值的累计
例11:显示列汇总

>

    ● 嵌套主从表: 使用GridView中的TemplateField,该Field中再套GridView,另外通过RowDataBound变更TemplateField中的SqlDataSource属性
例12:  嵌套的主从表

/>

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Asp.Net中清空所有textbox的几种方法发布时间:2022-07-10
下一篇:
asp.net里导出excel表方法汇总发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap