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

时间: 2024-07-31 23:40:18

GridView中使用DataKeyNames存储数据键值的相关文章

怎么样从gridview中获取一列数据的值?再怎么把获得的数据插入到另一个表中?没分了,还望各位大哥帮帮忙!!谢谢

问题描述 单击gridview控件外部的一个按钮,怎么获取gridview中的一列数据?获得的数据怎么插入到另一个表中,比如说那个表名是a 解决方案 解决方案二:FindControl获取RowIndex,再cells[i].text解决方案三:你根据ID查询出来值,然后再把值添加到a表这样就可以了吧!解决方案四:DataTabledt=newDataTable();dt.Columns.Add("col1");foreach(GridViewRowgvrinGridView1.Row

怎么样从gridview中获取一列数据的值?没分了,还望各位大哥帮帮忙!!谢谢

问题描述 单击gridview控件外部的一个按钮,怎么获取gridview中的一列数据? 解决方案 解决方案二:用循环啊foreach(GridViewRowmyrowinGridView1.Rows){stringlie=myrow.Cells[0].Text;}解决方案三:引用楼主wolf_268的帖子: 单击gridview控件外部的一个按钮,怎么获取gridview中的一列数据? 楼上的大哥说的yes!!!!!!!!解决方案四:帮顶!解决方案五:问一下,下边的"GridViewRow&q

简介Android应用中sharedPreferences类存储数据的用法_Android

在Android开发中,经常会遇到这样一种情况,即需要将用户偏好设置(如用户偏好的app色彩主题).与特定登录用户相关的设置(如不同登陆用户的偏好).整个app的生命周期内的设置(如首次登陆显示介绍页)存储在用户本地,那么首先考虑使用sharedPreferences.这是Android中专门用来存储轻量级键值对数据的类,会在本地以xml文件形式存储. 一. 运行机制接口:SharedPreferencesImpl在该接口中,定义了一个Editor接口.一个edit方法.多个get方法.一个监听

简介Android应用中sharedPreferences类存储数据的用法

在Android开发中,经常会遇到这样一种情况,即需要将用户偏好设置(如用户偏好的app色彩主题).与特定登录用户相关的设置(如不同登陆用户的偏好).整个app的生命周期内的设置(如首次登陆显示介绍页)存储在用户本地,那么首先考虑使用sharedPreferences.这是Android中专门用来存储轻量级键值对数据的类,会在本地以xml文件形式存储. 一. 运行机制 接口:SharedPreferencesImpl在该接口中,定义了一个Editor接口.一个edit方法.多个get方法.一个监

Android中Spinner控件之键值对用法实例分析_Android

本文实例讲述了Android中Spinner控件之键值对用法.分享给大家供大家参考.具体如下: 一.字典表,用来存放键值对信息 package com.ljq.activity; import java.io.Serializable; @SuppressWarnings("serial") public class Dict implements Serializable { private Integer id; private String text; public Dict()

Android中Spinner控件之键值对用法实例分析

本文实例讲述了Android中Spinner控件之键值对用法.分享给大家供大家参考.具体如下: 一.字典表,用来存放键值对信息 package com.ljq.activity; import java.io.Serializable; @SuppressWarnings("serial") public class Dict implements Serializable { private Integer id; private String text; public Dict()

怎么将gridview中所选择的内容的值具体显示到另一个页面的textbox或者table中

问题描述 怎么将gridview中所选择的内容的值具体显示到另一个页面的textbox或者table中 解决方案 这就是页面之间传值啊,点击选择的时候触发一个事件,存在session里或者通过跳转的get方式传值.

php 删除数据键值代码

php 删除数据键值代码 /**   * 删除key为指定的key里的值   * @param array $array 操作的数组   * @param string $key 键值可以是数组   * @return void   */  public static function delete(&$array, $key) {   if (!is_array($key)) {    $key = array($key);   }   foreach ($key as $k) {    un

详解iOS使用Keychain中的kSecClassGenericPassword存储数据_IOS

iOS设备中的Keychain是一个安全的存储容器,可以用来为不同应用保存敏感信息比如用户名,密码,网络密码,认证令牌.苹果自己用keychain来保存Wi-Fi网络密码,VPN凭证等等.它是一个sqlite数据库,位于/private/var/Keychains/keychain-2.db,其保存的所有数据都是加密过的.模拟器下keychain文件路径:~/Library/Application Support/iPhone Simulator/4.3/Library/Keychains ke