我有一个查询表达式,我绑定到Page_Load中的GridView。我想要在SelectedIndexChaned事件中捕获的数据位于由此定义的BoundField中:
<asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True"
SortExpression="ID" Visible="False" />
如果我设置Visible =“True”,我可以轻松获取此数据。有没有办法隐藏ID字段仍然可以获取数据?
答案 0 :(得分:4)
取决于您如何尝试获取数据。如果这是对于数据源中的每一行唯一的ID字段,请在GridView声明中使用DataKeyNames = "ID"
。然后,在后面的代码中,只要您需要ID,就可以使用以下行:
string ID = GridView1.Rows[GridRowIndex].DataKeys[0].Value.ToString();
您还可以将其中一个BoundField转换为TemplateField,并在其中放置一个HiddenField来存储ID。像这样:
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="someOtherDataLabel" runat="server" />
<asp:HiddenField ID="IDHiddenField" runat=server />
</ItemTemplate>
</asp:TemplateField>
然后,您可以在GridView的FindControl()
事件中使用RowDataBound
来存储ID值。