从代码隐藏中获取Gridview的Eval值

时间:2014-04-23 20:16:22

标签: c# asp.net gridview

我有一个从具有多个TemplateFields的数据库加载的gridview。如何从代码后面检索Eval值?换句话说,我需要该列的模板字段名称。

我希望获得“注册”并将其存储在变量中。

<asp:TemplateField HeaderText="REG" SortExpression="Registrations">
     <EditItemTemplate>
            <asp:CheckBox ID="cbRegEdit" runat="server" Checked='<%# (int)Eval("Registrations") == 1 %>' />
     </EditItemTemplate>
     <ItemTemplate>
                <asp:CheckBox ID="cbReg" runat="server" Enabled="false" Checked='<%# (int)Eval("Registrations") == 1 %>'>
                 </asp:CheckBox>
      </ItemTemplate>
      <ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>

3 个答案:

答案 0 :(得分:2)

您必须挂钩OnRowDataBound并执行以下操作:

protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e)
{

  if(e.Row.RowType == DataControlRowType.DataRow)
  {
    var registrations = ((YourType)e.Row.DataItem).Registrations;
    //do something 
  }
}

您的GridView必须是:

<asp:GridView OnRowDataBound="GridView1_RowDataBound" ...

答案 1 :(得分:0)

最简单的方法可能是为您的gridview分配datakey

一个例子是这样的:

<asp:Gridview ID="gvExample" runat="server" DataKeyNames="Registrations">

然后在后面的代码中你需要的是行索引,你可以执行以下操作:

gvExample.Datakeys(rowindex).value

答案 2 :(得分:0)

            CheckBox CBreg = (Page.FindControl("cbReg") as CheckBox);
            bool Reg = CBreg.Checked;   //Reg value stored

如果您无法以这种方式找到控件,则可能需要将Page.FindControl更改为TemplateField控件ID。