GridView-隐藏列但使用值

本文关键字:隐藏 GridView- | 更新日期: 2023-09-27 18:23:53

我正在使用一个以编程方式填充的GridView。为了访问ID值,我必须将其作为列之一(而不是ListBox,在ListBox中,我可以以隐藏的方式将值分配给每个条目)。有没有一种方法可以隐藏ID列,但仍然使用该值?

列是通过代码自动生成的,我使用DataKeys访问ID值。

GridView-隐藏列但使用值

以下是您可以做什么的概述。它并不复杂。您可以像往常一样进行数据绑定,但在执行此操作的同时,您可以找到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

将ID分配给DataKeyNames集合将正常工作,这对您来说是个问题吗?数据键可用于每一行,不会显示在UI中,但仍然可以使用行数据访问,因此您可以获得每一行的ID。您只需要从DataKeys集合中获取它,而不是直接从行中获取。

您可以添加代码来隐藏第一列(ID),这样它就不会出现,并依靠使用datakeynames来获取ID值。。。如果这不起作用,你能详细说明原因吗?这样我就可以调整我的答案了。。

如果将ID列添加到GridView的DataKeyNames属性,则可以获得ID值。msdn链接此处

myGrid.DataKeys[myRow.RowIndex].Value.ToString();

我通常会添加一个可见列,但随后会将colmn jus的模板设置为空格或其他内容。然后,在列的ID中,我放入要跟踪的ID。当内容被呈现为HTML时,这种技术让我可以使用javascript轻松地找到行的ID。

如果您让网格视图使用隐藏的数据键进行业务渲染,您可能永远不会在客户端浏览器javascript中找到ID。