GridView 的数据绑定

1.AlternatingItemTemplate:用于配置交替行的模板,所谓交替行就是第2、4、6、8...行,如果没有配置AlternatingItemTemplate,所有行都是用ItemTemplate,如果配置了AlternatingItemTemplate,逢双数的行就会使用AlternatingItemTemplate

2.Eval()方法一般有两个参数,第一个参数是需要绑定的字段名,第二个参数是格式化字符串,比如:NavigateUrl='<%# Eval("UserEmail","mailto:{0}")%>'

3.相对路径与绝对路径 
  相对路径:相对于当前目录的路径,不以"/"符号开头
  基于根目录的路径:相对于根目录的路径,以"/"符号开头
  比如:我们要在Admin目录下的ManagerUser文件中引用图片,那么当前目录路径就是http://xxxxxx/Forum/Admin,而根路径就是http://xxxxx,我们需要引用的是http://xxxxx/Forum/images/faces文件夹下的文件,那么对于相对路径就是../images/faces/文件名,而对于基于根目录的路径就是/Forum/images/faces/文件名。在Asp.Net中,我们还可以使用"~"符号来表示网站根目录,那么“~”也就等于“/Forum”,以下三种表示方式均是有效的:
        DataImageUrlFormatString="/Forum/images/faces/{0}";
        DataImageUrlFormatString="../images/faces/{0}";
        DataImageUrlFormatString="~/images/faces/{0}";

4.事件
  img事件通常在操作前引发,ed事件通常在操作后引发,比如:
  PageIndexChanging/PageIndexChanged:改变当前页面索引前/后引发


5.怎样获取数据
  ---获取主键id---
  思路一:将行索引号保存到CommandArgument(<asp:LinkButton CommandArgument='<%# Container.DataItemIndex %>'>)<如果不是模板列,索引号会自动保存到CommandArgument里,如果是则需要我          们手动绑定>,根据e.CommandArgument获取该行的索引号,其次绑定数据时需要把GridView的DataKeyNames属性设置为数据表的主键,然后我们可以根据GridView.DataKeys[行索引号]获取主            键id
  思路二:直接将id值保存到CommandArgument属性里

  ---获取行的其他非主键数据---
  思路一:将值保存到CommandArgument属性里

  思路二:直接从GridView获取值,优点是能获取多个值,缺点是值必须是显示在GridView上的,唯一需要的是行的索引号,获取值:GridView.Rows[行索引号].Cells[列索引号].Text,如果列使用的是           模板列,则找某些控件的值时可这样获取:(GridView.Rows[行索引号].Cells[列索引号].FindControl("控件id") as 控件类型).Text

  思路三:使用隐藏域来保存值,优点是数据可以是数据源中的任意数据,缺点是不宜存放过大的数据,否则会造成玉面体积急剧增加,如:<input type="hidden" runat="server" id="UserName"               value='<%# Eval("UserName")%>'>,注意:别忘记让HTML控件的runat="server",否则程序中不能访问控件的实例,获取隐藏的值:(GridView.Rows[行索引号].FindControl("UserName") as             HtmlInputHidden).Value;

  思路四:直接根据主键字段从数据库读取值,优点是不受绑定的限制,灵活度大了,缺点是还需要访问一次数据库


6.格式化GridView
  思路一:在GridView的绑定列中使用DataFormatString属性进行格式化,如:<asp:ButtonField DataField(绑定的数据字段)="UserName" DataFormatString="<i>{0}</i>">

  思路二:在GridView的模板列的绑定标签中直接使用各种运算(比如三元运算符)和表达式进行格式化
          但有的时候需要对绑定数据进行复杂的运算,不是简单的格式字符串和三元运算就能完成的,我们可以直接把绑定的数据传入后台代码,进行运算后让方法再把格式化后的字符串返回
          在很多时候我们需要把0、1、2等数字型的数据转化为具有实际意义的字符串时,我们往往会使用if else或者switch case等语句,虽然可行但是代码显得很复杂,我们可以变通一下,把需要           输出的字符串使用字符串数组按照顺序排放,使用索引号来去响应的字符串,代码非常简洁

  思路三:在GridView的模板列的绑定标签中调用后台方法进行格式化,与思路二相仿

  思路四:在GridView的绑定事件处理方法(RowDataBound)中读取数据源的数据并为GridView赋值
          RowDataBound事件里的代码如下:
          protected void User_RowDataBound(object sender,GridViewRowEventArgs e)
          {
             GridViewRow gvr=e.Row;
             if(gvr.RowType==DataControlRowType.DataRow)
             {
                string sUserName=DataBinder.Eval(gvr.DataItem,"UserName").ToString();
                gvr.Cells[0].Text=string.Format("<i>{0}</i>",sUserName);
             }
          }
          其实这样一个过程就实现了后台数据绑定,不但增加了灵活性还可以在绑定前进行各种权限判断,对不同的用户显示不同的数据

7.排序
  GridView可自动进行排序,它给我们提供了一种常用的排序模式,那就是在需要排序的列的页眉使用超链接来显示列名,我们单击超链接后就能对单击的列进行排序,设置AllowSorting为true则启用  排序,若有些列是模板列,GridView并不知道单击模板列的时候需要按照哪个字段进行排序,所以,每一列都有一个SortExpression属性代表需要排序的字段名


8.分页
  GridView可自动进行分页,有分页功能,其中AllowPaging属性是否启用分页,Mode属性设置分页导航的模式,有四种组合,(前一页/后一页  前一页/后一页和首页/末页  分页数字  分页数字和首页   /末页),PageButtonCount属性是分页导航中显示的页数,Position属性是分页导航显示的位置,PageSize是每一页显示的记录数,PageText或者PageImageUrl可以设置切换页面的文字的样式,可以是   文字或者图片,PageIndexChanging事件中e.NewPageIndex属性可获得当前页索引号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值