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
 
  
 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pytest运行_python缓存机制

    pytest运行_python缓存机制前言pytest运行完用例之后会生成一个.pytest_cache的缓存文件夹,用于记录用例的ids和上一次失败的用例。方便我们在运行用例的时候加上–lf和–ff参数,快速运行上一

    2022年7月29日
    8
  • 线程同步的四种方式

    线程同步的四种方式转载地址: http://blog.csdn.net/ebowtang/article/details/29905309一,什么是线程同步和互斥同步就是协同步调,按预定的先后次序进行运行。如:你说完,我再说。这里的同步千万不要理解成那个同时进行,应是指协同、协助、互相配合。线程同步是指多线程通过特定的设置(如互斥量,事件对象,临界区)来控制线程之间的执行顺序(即所谓的同步)也可以说是在线程之间通过…

    2022年7月15日
    13
  • glassfish安装教程_Glass Shatters

    glassfish安装教程_Glass Shatters一、下载页面:https://glassfish.java.net/downloads/3.1.2.2-final.html二、下载地址:http://download.java.net/glassfish/3.1.2.2/release/glassfish-3.1.2.2-ml.zip三、下载后解压到/srv/目录下.四、修改启动脚本:/srv/glassfi…

    2022年8月20日
    5
  • unity3d场景制作

    unity3d场景制作这是最后的成果以上图片资源均为资源商店免费获取制作地形的方法1创建相邻地形(主要用于地形的扩大)2绘制地形(主要用于地貌的设置)3绘制树(用于树木的绘制)4绘制细节(用于小草或小花的设置)5地形设置(用于整体设置)绘制的主要方面为2、3、4点第2点:不同地形是有不同纹理形成,在编辑地形层中选择自己喜欢的地形。注意:法线贴图是地形纹理的进一步深化,可以加强地形的真实感第3点绘制树与绘制地形基本相同第4点绘制细节与前两者不同的是,除了细节纹理外,还有细节网格对与地形的

    2022年4月30日
    56
  • jenkins自动触发构建_jenkins触发器

    jenkins自动触发构建_jenkins触发器前言跑自动化用例每次用手工点击jenkins出发自动化用例太麻烦了,我们希望能每天固定时间跑,这样就不用管了,坐等收测试报告结果就行。jenkins的定时任务是用的crontab语法定时构建语法

    2022年7月30日
    3
  • Vue的安装及使用快速入门

    Vue的安装及使用快速入门Vue的安装及使用快速入门

    2022年4月22日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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