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


  • 相关阅读:
    Xshell6提示“要继续使用此程序,您必须应用最新的更新或使用新版本”的解决办法
    设置UIImage的边框和圆角大小以及颜色
    CATransition使用
    [转]C/C++中extern关键字详解
    New ipad与ipad2有何不同
    使用Xcode收藏自己常用的代码模板
    objectivec 关于 self 的用法总结
    查找 EXC_BAD_ACCESS 问题根源的方法
    结构体的对齐方式
    添加three20模板的方法
  • 原文地址:https://www.cnblogs.com/lzhdim/p/1391759.html
Copyright © 2020-2023  润新知