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(); 
}
 




 

目录
相关文章
|
10月前
|
人工智能 Linux 开发工具
Kiln AI:零代码实现微调模型!自动生成合成数据与微调模型的开源平台
Kiln AI 是一款开源的 AI 开发工具,支持零代码微调多种语言模型,生成合成数据,团队协作开发,自动部署。帮助用户快速构建高质量的 AI 模型。
1721 8
Kiln AI:零代码实现微调模型!自动生成合成数据与微调模型的开源平台
|
缓存 前端开发 JavaScript
Vite 打包优化:全面解析与实践
Vite 作为新一代前端构建工具,以其快速开发体验和高效打包能力著称。然而,在实际项目开发中,为了进一步提升性能和用户体验,我们仍需对 Vite 打包进行优化。本文将深入探讨 Vite 打包优化策略,涵盖代码拆分、资源压缩、缓存利用、构建配置等多个方面,并提供实践案例和最佳实践建议,帮助开发者充分释放 Vite 的潜力。
2918 1
|
数据可视化
R 可视乎|优雅的绘制流程图
R 可视乎|优雅的绘制流程图
234 0
|
C++ Windows
QT5的程序打包发布(打包成exe可执行程序)
QT5的程序打包发布(打包成exe可执行程序)
4131 0
QT5的程序打包发布(打包成exe可执行程序)
|
1天前
|
数据采集 人工智能 安全
|
10天前
|
云安全 监控 安全
|
2天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
923 150
|
2天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1658 8