获取不可见的边界字段的值

时间:2012-05-22 01:30:39

标签: c# asp.net

我在gridview中有以下两个BoundFields

<asp:BoundField DataField="ProductId" HeaderText="ID" HeaderStyle-HorizontalAlign="Left" Visible = "false" />
 <asp:BoundField DataField="ProductDescription" HeaderText="product Description" HeaderStyle-HorizontalAlign="Left" />

如果第一个绑定字段设置为visible false,我如何获取它?

2 个答案:

答案 0 :(得分:2)

您无法访问不可见的BoundField值。您必须使用TemplateField并在其中添加HiddenField控件并绑定其Value属性。

标记,

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:HiddenField ID="HiddenField1" runat="server" 
                    Value='<%# Eval("ProductId") %>' />
                 ....
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

代码隐藏以从每行的第一个单元格的HiddenField控件中获取值。

 foreach (GridViewRow row in GridView1.Rows)
  {
    if (row.RowType == DataControlRowType.DataRow)
      {
       HiddenField productid = row.Cells[0].FindControl("HiddenField1") as HiddenField;
       ...
       }
  }

答案 1 :(得分:1)

使用ID最好在GridView上使用DataKeyNames属性

DataKeyNames="ProductId"

然后在代码背后你可以得到它

GridView1.DataKeys[row_index]["ProductId"]