(转)GridView中使用DataKeyNames存储数据键值

GridView中DataKeyNames的应用小结
11:02:35]  
GridView的DataKeyNames属性设为"ID,Name"

GridView1.DataKeyNames = new string[]{ "ID","Name" };

列中LinkButton的CommandName属性设为"Delete"

就可以在GridView1_RowDeleting中写代码:

DataKey key = GridView1.DataKeys[e.RowIndex];
int id =
int.Parse(key[0].ToString());//得到id字段值
string name =
key[1].ToString();//得到name字段值

很多时候我们需要在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();
}

 

 

 

转载于:https://www.cnblogs.com/wangyt223/archive/2012/09/17/2688849.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值