是否有可能在代码隐藏中获取不可见的GridViewRow的文本?

osc*_*tin 4 asp.net gridview webforms

我有一个GridView BoundField定义如下:

<asp:BoundField DataField="Id" />
Run Code Online (Sandbox Code Playgroud)

在代码隐藏中,我可以获取行的实例并读取如下文本:

Row.Cells(0).Text
Run Code Online (Sandbox Code Playgroud)

但是,当我像这样使BoundField不可见时......

<asp:BoundField DataField="Id" Visible="false" />
Run Code Online (Sandbox Code Playgroud)

... Row.Cells(0).Text返回一个空字符串.

我找到的唯一解决方案是创建一个项目并编辑项目模板,在两者中放置一个隐藏字段,然后使用隐藏字段.FindControl().不过,我真的不喜欢这个主意.

R.C*_*R.C 6

使用DataKeyNamesgridview的属性.

<asp:GridView runat="server" ID="MyGridView" DataKeyNames="Id">
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)

并访问此ID值:

var data = MyGridView.DataKeys[RowIndex].Values[KeyIndex]
Run Code Online (Sandbox Code Playgroud)

所以,在你的情况下,它可以如下所述第二排

var data = MyGridView.DataKeys[1].Values[0]
Run Code Online (Sandbox Code Playgroud)