在 DataGridView 中访问不可见字段数据时出现问题
Problems accesing invisible field data in DataGridView
大家好,在此先感谢您花时间阅读我的问题。
这是我的场景:
我有一个 DataGridView
,我用 PK Id
显示了 table 的一些值。我不想显示 Id
字段,但仍然能够将值访问到 Id
以在我的数据库上执行 DELETE
语句。
我已经使用指令隐藏了 Id
字段:DataGridView.Columns("Id").Visible = False
Id
字段是 DataGridView 中的第一个字段,因此它在 selected 时获得索引 0。
如果我试图通过DataGrid.SelectedCells.Item(0).Value
获得它的价值
程序抛出异常。
我已经在不使用 DataGridView.Columns("Id").Visible = False
的情况下测试了相同的代码并且它工作得很好,所以我认为如果对应于 Item(0)
的字段是 DataGrid.SelectedCells.Item(0).Value
函数则无法工作不可见。
我需要直接从 DataGridView
select Id
因为它的 Id
随每一行而变化。
任何解决此问题的不同方法将不胜感激。
根本不需要在代码中隐藏列或引用网格。首先将您想要的列添加到设计器中的网格。设置每一列的 DataPropertyName
以告诉它要绑定到哪个数据源列。
在代码中,使用 OleDbDataAdapter
填充 DataTable
,然后通过 BindingSource
将其绑定到网格。每当您想删除当前记录时,请在 BindingSource
上调用 RemoveCurrent
。这会将行标记为 Deleted
并将其隐藏在 UI.
中
完成所有要进行的更改后,在同一数据适配器上调用 Update
以将 DataTable
中的更改批量保存回数据库。
试试这个
If Not IsNothing(DataGrid.CurrentRow) Then
Dim intId As Integer = DataGrid.CurrentRow.Cells("Id").Value
End If
您可以在一行中使用 .Tag 代替隐藏列来存储信息。
例如:
DataGridView1.Rows(sID).Tag = Your id.
大家好,在此先感谢您花时间阅读我的问题。
这是我的场景:
我有一个 DataGridView
,我用 PK Id
显示了 table 的一些值。我不想显示 Id
字段,但仍然能够将值访问到 Id
以在我的数据库上执行 DELETE
语句。
我已经使用指令隐藏了 Id
字段:DataGridView.Columns("Id").Visible = False
Id
字段是 DataGridView 中的第一个字段,因此它在 selected 时获得索引 0。
如果我试图通过DataGrid.SelectedCells.Item(0).Value
获得它的价值
程序抛出异常。
我已经在不使用 DataGridView.Columns("Id").Visible = False
的情况下测试了相同的代码并且它工作得很好,所以我认为如果对应于 Item(0)
的字段是 DataGrid.SelectedCells.Item(0).Value
函数则无法工作不可见。
我需要直接从 DataGridView
select Id
因为它的 Id
随每一行而变化。
任何解决此问题的不同方法将不胜感激。
根本不需要在代码中隐藏列或引用网格。首先将您想要的列添加到设计器中的网格。设置每一列的 DataPropertyName
以告诉它要绑定到哪个数据源列。
在代码中,使用 OleDbDataAdapter
填充 DataTable
,然后通过 BindingSource
将其绑定到网格。每当您想删除当前记录时,请在 BindingSource
上调用 RemoveCurrent
。这会将行标记为 Deleted
并将其隐藏在 UI.
完成所有要进行的更改后,在同一数据适配器上调用 Update
以将 DataTable
中的更改批量保存回数据库。
试试这个
If Not IsNothing(DataGrid.CurrentRow) Then
Dim intId As Integer = DataGrid.CurrentRow.Cells("Id").Value
End If
您可以在一行中使用 .Tag 代替隐藏列来存储信息。
例如:
DataGridView1.Rows(sID).Tag = Your id.