|
在asp.net2.0中,当我们需要在GridView的ItemDataBound之类的事件中需要获取当前行的一些关联性的数据值,但这些数据值又不能直接体现在GridView的列中显示出来,这时我们可以采用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(); }
|