我在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,我如何获取它?
答案 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"]