zoukankan
html css js c++ java
GridView中使用DataKeyNames存储数据键值
很多时候我们需要在
GridView的
RowCommand
之类的事件中需要获取当前行的一些关联性的数据值。但这些数据值又没有直接体现在GridView的列中。这个时候该怎么办呢?
有同学喜欢用隐藏列的方式,把需要使用但不显示的字段绑定到此列上,同时设置列宽为0或不显示,使用时可以用常规的取某行某列的方式来获取数据。
但是在Framework 2.0中,我们可以采用DataKeyNames的方式来获取此类数据。
代码示例:
(前台)
<
asp:GridView ID
=
"
GridView1
"
runat
=
"
server
"
DataKeyNames
=
"
Grup
"
OnRowCommand
=
"
GridView1_RowCommand
"
AutoGenerateColumns
=
"
False
"
>
<
Columns
>
<
asp:TemplateField
>
<
ItemTemplate
>
<
asp:Label ID
=
"
Label1
"
runat
=
"
server
"
Text
=
'
<%#Eval("GrupName") %>
'
></
asp:Label
>
</
ItemTemplate
>
</
asp:TemplateField
>
<
asp:ButtonField Text
=
"
按钮
"
/>
</
Columns
>
</
asp:GridView
>
Grup
为我们想使用但不需要显示的列。(如果有多个字段,使用逗号分开)
(后台)
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(
!
IsPostBack )
{
DataTable dt
=
new
DataTable();
dt.Columns.Add(
"
Grup
"
);
dt.Columns.Add(
"
GrupName
"
);
dt.Rows.Add(
new
object
[]
{
0
,
"
营业部
"
}
);
dt.Rows.Add(
new
object
[]
{
1
,
"
市场部
"
}
);
this
.GridView1.DataSource
=
dt;
this
.GridView1.DataBind();
}
}
protected
void
GridView1_RowCommand(
object
sender, GridViewCommandEventArgs e)
{
//
获取当前行索引
int
index
=
Convert.ToInt32(e.CommandArgument);
//
取出当前行数据键值对象中的值
string
strGrup
=
((GridView)sender).DataKeys[index].Values[
"
Grup
"
].ToString();
}
顺便补充一句。
如果你使用模板列中放置按钮控件的方式,要想在按钮事件中获取这种字段值就更简单了。
只需要在按钮的CommandArgument属性设置为想绑定的字段,如:
<
asp:TemplateField
>
<
ItemTemplate
>
<
asp:Button
ID
="Button2"
runat
="server"
OnClick
="Button2_Click"
Text
="Button"
CommandArgument
='
<%#Eval("Grup") %
>
' />
</
ItemTemplate
>
</
asp:TemplateField
>
按钮事件中如是写:
protected
void
Button2_Click(
object
sender, EventArgs e)
{
string
strGrup
=
((Button)sender).CommandArgument.ToString();
}
Austin Liu 刘恒辉
Lzhdim Group's Chairman,Project Manager and Software Designer
E-Mail:
lzhdim@163.com
Blog:
http://lzhdim.cnblogs.com
欢迎收藏和转载此博客中的博文,但是请注明出处,给作者一个与大家交流的空间。谢谢大家。
查看全文
相关阅读:
js 多媒体文件(图片,表格 等) 下载方法
CentOS7 + asp.net core 3.1 + mysql 8 配置备忘
项目管理平台参考设计
golang 使用rate实现redis qps令牌桶限流
golang执行命令实时输出(协程通过channel更新数据到主进程)
go-chart go后端生成图表base64
go-chart go后端生成图表base64
golang OOM分析
Golang xorm time自定义解析
python 多线程
原文地址:https://www.cnblogs.com/lzhdim/p/1391759.html
最新文章
财务报表测试
金蝶、用友类型财务软件测试汇总
软件测试 QA、QC、QM的关系与区别
【软件测试】质量保证与测试策略
测试过程监控中关注的度量数据
测试部门绩效考评标准
android下vulkan与opengles纹理互通
VS2019 添加时没有区域(Areas) 通用-MVC 下也没有域
C# HttpWebRequest 请求返回 The remote server returned an error: (400) Bad Request.
C# The request was aborted: Could not create SSL/TLS secure channel.
热门文章
C# GDI+文字画图 添加任意角度文字(文字旋转是中心旋转,角度顺时针为正)
visual studio 2019 运行vue 项目 npm run serve 提示 'vue-cli-service' 不是内部或外部命令,也不是可运行的程序
window Visual studio 2019 系统下Node.js安装以及环境变量配置
visual studio 推送项目上自己的github账户报错
移动端meta设置大全
浅谈 js 字符串 search 方法
vue使用富文本粘贴图片和html访问图片资源的403问题(http referrer)
使Node.js中的console.log()输出彩色字体
TypeScript typeof 操作符
js截取视频帧(封面)
Copyright © 2011-2022 走看看