GridView 的数据绑定

GridView 的数据绑定1.AlternatingItemTemplate:用于配置交替行的模板,所谓交替行就是第2、4、6、8…行,如果没有配置AlternatingItemTemplate,所有行都是用ItemTem

大家好,又见面了,我是你们的朋友全栈君。

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

2.Eval()方法一般有两个参数,第一个参数是需要绑定的字段名,第二个参数是格式化字符串,比如:NavigateUrl='<%# Eval(“UserEmail”,”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属性可获得当前页索引号

  

       

 

 

 

 

 

 

 

         
       
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dView
 
  
 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/155764.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号