我正在使用我以编程方式填充的GridView。为了访问ID值,我必须将它作为列之一(而不是ListBox,我能够以隐藏的方式将值分配给每个条目)。有没有办法隐藏该ID列,但仍然使用值?
通过代码自动生成列,我使用DataKeys访问ID值。
答案 0 :(得分:2)
将ID分配给DataKeyNames集合将正常工作,这对您来说是一个问题吗?数据键可用于每一行,不会显示在UI中,但仍可使用行数据访问,因此您可以获取每行的ID。您只需从DataKeys集合中获取它,而不是直接从行中获取它。
您可以添加代码来隐藏第一列(ID)以使其不显示,并依赖于使用datakeynames来获取ID值...如果这不起作用,您能详细说明原因吗?所以我可以调整我的答案..
答案 1 :(得分:2)
以下是您可以做的一般概述。这并不复杂。您像往常一样进行数据绑定,但在执行此操作时,您会找到ID列的索引。然后使用该索引隐藏RowCreated事件上的列。如果您使用自动生成的列搜索如何隐藏列,您将按照我用于隐藏的方法遇到几个答案。
Private IDColumnIndex As Integer //Class scope - we need to use it in multiple methods
Public Sub PageLoad() Handles Me.Load //or wherever your databind is happening
Dim source As New DataTable()
IDColumnIndex = source.Columns("id").Ordinal //Gets column index of "ID" column
view.DataSource = source
view.DataBind()
End Sub
//Hide our "ID" auto-generated column.
Public Sub view_RowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles view.RowCreated
e.Row.Cells(IDColumnIndex).Visible = False
End Sub
答案 2 :(得分:1)
如果将ID列添加到GridView的DataKeyNames属性,则可以获取ID值。 msdn link here
myGrid.DataKeys[myRow.RowIndex].Value.ToString();
答案 3 :(得分:1)
我通常会添加一个可见列但是然后为colmn jus创建一个空格或模板的模板。然后在列的ID中,我输入了我想要跟踪的ID。这个技术让我可以在内容呈现为HTML时使用javascript轻松找到行的ID。
如果让网格视图使用隐藏数据键进行业务渲染,您可能永远不会在客户端浏览器javascript中找到所有混乱中的ID。