Asp.net 数据可以保存在动态绑定的GridView中吗;什么是看不见的领域?

Asp.net 数据可以保存在动态绑定的GridView中吗;什么是看不见的领域?,asp.net,data-binding,gridview,Asp.net,Data Binding,Gridview,我有一个查询表达式,我正在页面加载中绑定到GridView。我要在SelectedIndexChaned事件中捕获的数据位于如下定义的BoundField中: <asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" SortExpression="ID" Visible="False" /> 如果我设置Visible=“True”,则获取此数据不会有

我有一个查询表达式,我正在页面加载中绑定到GridView。我要在SelectedIndexChaned事件中捕获的数据位于如下定义的BoundField中:

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


如果我设置Visible=“True”,则获取此数据不会有问题。有没有一种方法可以隐藏ID字段,但仍然可以获取数据

取决于您试图获取数据的方式。如果这是数据源中每行唯一的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的
RowDataBound
事件中使用
FindControl()
来存储ID值。

取决于您试图获取数据的方式。如果这是数据源中每行唯一的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的
RowDataBound
事件中使用
FindControl()
来存储ID值。

第二种方法非常有效。Intellisense不同意第一个。非常感谢。你的第二条路很有魅力。Intellisense不同意第一个。非常感谢。