GridView中使用DataKeyNames存储数据键值

简介: 很多时候我们需要在GridView的RowCommand之类的事件中需要获取当前行的一些关联性的数据值。但这些数据值又没有直接体现在GridView的列中。这个时候该怎么办呢? 有同学喜欢用隐藏列的方式,把需要使用但不显示的字段绑定到此列上,同时设置列宽为0或不显示,使用时可以用常规的取某行某列的方式来获取数据。
很多时候我们需要在 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(); 
}
 




 

目录
相关文章
|
12天前
|
存储 消息中间件 缓存
键值(key-value)数据库
【4月更文挑战第9天】键值数据库(NoSQL)以键值对形式存储数据,简单灵活,适合任意类型数据。其特点是高性能、高可扩展性,常见应用包括缓存、会话管理、分布式锁、计数统计、配置管理和轻量级消息队列。然而,它不适用于结构化信息存储和复杂查询,选择时需考虑应用场景。
62 5
|
29天前
|
存储 弹性计算 算法
快存储数据安全
快存储数据安全
11 0
|
26天前
|
算法
数据结构-哈希表(二)
数据结构-哈希表(二)
30 0
|
26天前
|
存储 缓存 Serverless
数据结构-哈希表(一)
哈希表(Hash Table),也称为散列表,是一种常见的数据结构,用于存储键值对。它通过将键映射到一个特定的索引位置来实现高效的数据访问和查找。
23 3
|
3月前
|
存储 NoSQL 数据库
请解释一下键值存储数据库的工作原理,并提供一个使用键值存储数据库的实际应用场景。
请解释一下键值存储数据库的工作原理,并提供一个使用键值存储数据库的实际应用场景。
57 0
|
4月前
|
存储 缓存 NoSQL
键值存储
键值存储
100 1
|
4月前
|
存储 监控 物联网
列族存储
列族存储
48 1
|
11月前
|
存储 机器学习/深度学习 算法
数据结构-哈希表-1
数据结构-哈希表-1
数据结构108-哈希表删除操作
数据结构108-哈希表删除操作
57 0
数据结构108-哈希表删除操作
数据结构109-哈希表删除操作代码
数据结构109-哈希表删除操作代码
63 0