大家好,提前感谢大家花时间阅读我的问题。
这是我的场景:
我有一个DataGridView
,我从一个有PKId
的表中显示一些值。我不想显示Id
字段,但仍然能够访问Id
的值,以便在我的数据库上执行DELETE
语句。
我用指令DataGridView.Columns("Id").Visible = False
Id
字段Id
字段是DataGridView上的第一个字段,因此当它被选中时,它的索引为0。
如果我试图通过DataGrid.SelectedCells.Item(0).Value
得到它的值程序抛出异常。
我在没有使用DataGridView.Columns("Id").Visible = False
的情况下测试了相同的代码,它可以完美地工作,所以我假设函数DataGrid.SelectedCells.Item(0).Value
不能工作,如果对应于Item(0)
的字段不可见。
我需要直接从DataGridView
中选择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.