GridView - 隐藏列但使用值

时间:2013-07-19 15:47:31

标签: c# asp.net gridview

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

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

4 个答案:

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