您的位置:首页 > 编程语言 > ASP

GridView中使用DataKeyNames存储数据键值

2010-12-16 10:04 525 查看
很多时候我们需要在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(); 


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  存储 button server asp