zoukankan      html  css  js  c++  java
  • (转)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();
    }

     

     

  • 相关阅读:
    C# ref与out区别
    天气预报
    全面理解javascript的caller,callee,call,apply概念(修改版)
    SQL注入案例曝光,请大家提高警惕
    sql字段保存值[1,2,3,4,5]复杂取法,收藏sql函数
    MySQL故障诊断常用方法手册(含脚本、案例)
    2021 年 8 月国产数据库排行榜:秋日胜春朝
    【墨天轮专访第二期】巨杉数据库萧少聪:重视企业长期需求,打造中国的世界级产品
    【我和达梦的故事】 有奖征文活动开始啦,万元奖品池+现金奖励等你拿!
    2021年8月国产数据库排行榜:TiDB稳榜首,达梦返前三,Kingbase进十强,各厂商加速布局云生态
  • 原文地址:https://www.cnblogs.com/wangyt223/p/2688849.html
Copyright © 2011-2022 走看看