数据可以保存在动态绑定的GridView的不可见字段中吗?

时间:2010-11-16 15:36:31

标签: asp.net data-binding gridview

我有一个查询表达式,我绑定到Page_Load中的GridView。我想要在SelectedIndexChaned事件中捕获的数据位于由此定义的BoundField中:

<asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" 
                            SortExpression="ID" Visible="False"  />

如果我设置Visible =“True”,我可以轻松获取此数据。有没有办法隐藏ID字段仍然可以获取数据?

1 个答案:

答案 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值。