GridView的DataKeyNames属性(转)
DataKeyNames表示主键的列名,可以通过GridViewEntity.DataKeys[RowIndex]["ColumsName"]来获取他的值,当然它是不会显示出来的,其实我是在一个用SqlDataSource中发现的,看到了有这么一个主键而实现更新,当然在我们多层开发中也不能缺少这个。当我们在用Template时怎么取得值呢?我们可以把那个列也设为DataKeyNames中,记得多个要用","隔开。
如果没有设置成DataKeyNames,那只能通过GridViewEntity.Rows[RowIndex].Cell[Index].Text来得到值了,不知老兄有没有看到一些HTML字符呢? 这个最是经常见得了,不用当心我们可以用HttpUnility.HtmlDecode()来解决他!
在我们使用GridView的过程中,经常会遇到这样对问题,我们选择某一行进行编辑,或选择某一行删除或者.......时,我们需要获取当前行的某些信息,尤其是当前行的主键信息,主键信息一般不显示在页面,此时我们有三种方法来处理。
第一种是使用DataKeyNames ,这里要重点介绍的。
第二种是使用按钮的CommandArgument属性邦定需要的信息。
第三种是最古老最通用的方法使用隐藏的方法显示。
第一种方法:使用DataKeyNames,DataKeyNames可邦定一列,也可邦定多列
前台:DataKeyNames="FID" 绑定一个值
后台:GridView1.DataKeys[e.Row.RowIndex].Value.ToString();
前台:DataKeyNames="FID,FName" 绑定两个值
后台:GridView1.DataKeys[e.Row.RowIndex].Values[0].ToString();
后台:GridView1.DataKeys[e.Row.RowIndex].Values[1].ToString();
或者
后台:GridView1.DataKeys[e.Row.RowIndex].Values["FID"].ToString();
后台:GridView1.DataKeys[e.Row.RowIndex].Values["FName"].ToString();
第二种方法:是用按钮的CommandArgument属性邦定需要的信息。
典型的例子:下载附件列(有附件的显示下载链接,无附件的显示为空)
<asp:TemplateColumn HeaderText="附件">
<HeaderStyle Width="7%"></HeaderStyle>
<ItemTemplate>
<asp:LinkButton id="LinkButton1" CommandName="download" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "attached_file")%>' runat="server" Visible='<%# ((DataBinder.Eval(Container.DataItem, "attached_file").ToString()) != "") %>'>下载</asp:LinkButton>
</ItemTemplate>
</asp:TemplateColumn>
在dgHKStock_ItemCommand事件中:
if ("download" == e.CommandName)
{
mybc.SystemOverTime0(); // 判断Session是否过期
mybc.RightManage("16010500"); // 判断用户是否有打开此网页的权限
mybc.HTTP_DownloadFile(e.CommandArgument.ToString()); // 取得当前存货信息的附件存放路径
}
最古老最通用的方法使用隐藏的方法显示。
<style type="text/css">
.test{
display:none;
}
</style>
<asp:TemplateField HeaderText="姓名" SortExpression="name" ItemStyle-CssClass="test" HeaderStyle-CssClass="test">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("name") %>' ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
把隐藏列转成模版列,通过FindControl访问模版列的内容:
<asp:TemplateField Visible="false">
<ItemTemplate>
<asp:Label runat="server" Text='<%#Eval("id") %>' ID="lblId"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
Label lblId=GridView1.Rows[e.NewEditIndex].Cells[0].FindControl("lblId") as Label;
Response.Write(lblId.Text);
}
转载于:https://www.cnblogs.com/jhxk/articles/1602363.html
GridView的DataKeyNames属性(转)相关推荐
- GridView的DataKeyNames属性 转载的
偶今天用到这个了,转载 "事在人为"楼主的,原文地址: http://www.cnblogs.com/andhm/archive/2010/05/07/1730024.html ...
- 【转】GridView的DataKeyNames的一些用法
[转]GridView的DataKeyNames的一些用法 (2012-07-25 17:45:46) 转载▼ 标签: 杂谈 分类: 数据绑定控件使用 页面前台有以下代码: <asp:GridV ...
- 动态生成GridView时,加入DataKeyNames属性,回调时出错解决方法
早上看到有位同学问关于自动生成GridVie并且添加DataKeyNames属性后 回调页面时,出现错误异常.下面是我实现的方法.注意一点.就是数据绑定的时间. 要是先绑定,再添加到div1中,回调页 ...
- Gridview利用DataFormatString属性设置数据格式
首 先把Gridview的AutoGenerateColumns属性设为False(默认是False),DataField选择相应的字段,特别需要注 意的是要把需要设置的字段的HtmlEncode属性 ...
- 【Vegas原创】GridView设定DataFormatString属性失效的解决方法
我给GridView控件的各个BoundField数据行设定了DataFormatString属性,但是没有任何效用. 解决方法:将BoundField数据行的HtmlEncode属性设定成False ...
- 转 C# GridView中DataFormatString属性的取值
DataFormatString 属性语法如下: DataFormatString="{0:格式字符串}" 我们知道在DataFormatString 中的 {0} 表示数据本身, ...
- dev 获取gridview没有rows属性_虚拟黑群晖不直通也可以获取到SMART?
黑群晖的用户,都有一个痛点,那就是访问硬盘的SMART信息! SMART是什么? SMART并不是它字面的意思:聪明.而是Self-Monitoring, Analysis and Reporting ...
- FineUI Grid DataKeyNames属性
DataKeyNames 行关键字段 DataIFrameUrlFields 用于url后面传值 <f:Grid ID="Grid2" Title="Grid2& ...
- GridView控件的DataKeyNames
自己之前在用GridView的时候也遇到不知道怎么取行值的问题,今天看到这位仁兄的介绍,感觉挺不错,所以就转载学习了. 页面前台有以下代码: <asp:GridView ID="Vie ...
- GridView控件当前行索引RowCommand和主键DataKeyNames应用
在用GridView控件时,我们经常会碰到获取当前行的索引,通过索引进行许多操作.例如,可以获得当前行某一个控件元素:设置某一元素的值等等. 下面结合实例介绍几种获得GridView当前行索引值的方法 ...
最新文章
- 集结最优秀同行,智源面向全球诚邀研究人才加入
- CISSP考前总复习
- 《Java 核心技术卷1 第10版》学习笔记------ Object类的 hashCode 方法
- HTML5-寻路跟踪
- Python Pycharm Anacanda 区别
- 微软Vista今起大幅降价 最高幅度达到千元
- 盘点数据处理工具,手把手教你做数据清洗和转换
- python 不等于_python怎么一次输入两个数
- fetchtype 动态控制_hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法
- 编码基本功:工作中,大多数人不会举一反三
- 自备一个刷BIOS神器
- 访问ftp服务器网页,访问ftp服务器是网页
- prometheus 阿里云短信告警
- Sublime Text 4 首个稳定版终于来了:支持 GPU 渲染、兼容旧版本、Python API 升级
- 做表情包就能卖1亿刀,这事儿放在国内我是不信的
- 计算机三级网络技术需要考二级什么,考计算机三级要先考二级吗?计算机三级的考试内容是什么?...
- ASP.NET失物招领网站包含(寻物启事+感谢信+通知公告)c#开发
- 根据离散点画直线,iOS离散点画曲线
- 关于vs重新生成出现“错误 CS2001: 未能找到源文件”
- 【调剂】关于安徽工程大学2022年硕士研究生招生相关问题答考生问
热门文章
- DevExpress DateEdit控件选择精确到秒
- 部分手机浏览器存在将ajax请求当成广告过滤的情况,及解决方案
- 04、自学——计算机网络学习任务与进度(物理层)
- 给对象添加属性和给对象原型添加属性的区别
- 世界编程大赛第一名编写的程序-3D世界
- 您试图打开的项目是WEB项目,需要通过指定其Url路径来打开它
- Raspbian 2019-06-20 发布
- python基本数据类型和简单用法
- greenplum数据库建表及分区
- python引入pytesseract报错:ValueError: Attempted relative import in non-package