我在VB编程。. NET并拥有一个从数据库自动填充的datagridview
。
当我使用代码如dgvPurchases.Rows(dgvPurchases.SelectedRows(i).Index).Cells("Head").Value
时,我收到一个错误列名"Head"未找到。
这是我的数据表中的列名,当我执行Edit Columns
时,它将"Head"显示为DataPropertyName
。网上的一个答案是重命名列,但我可以找到如何重命名标题,但不重命名列。
当我去Purchases.Designer.vb
时,我找到了Me.HeadDataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn()
。
在我最初设计表单后添加到数据库的列上,它们显示Me.CkOff = New System.Windows.Forms.DataGridViewTextBoxColumn()
和dgvPurchases.Rows(dgvPurchases.SelectedRows(i).Index).Cells("CkOff").Value
返回一个值。
我知道我可以使用列号;但是,如果我更改了数据表,那么更正代码就有问题了。使用数据列名更可取
我遇到了一个类似的问题,可以用类似的方式解决。经过一番深入研究,我发现这个问题是在我将DataGridView的DataSource设置为Nothing以试图清除它时引起的。
当我做一个datatable时。在我用作数据源的底层数据表中,这个问题就消失了。
我通过进入FORMNAME.Designer.vb
并更改
'HeadDataGridViewTextBoxColumn ' Me.Head.DataPropertyName = "Head" Me.Head.HeaderText = "Head" Me.Head.Name = "HeadDataGridViewTextBoxColumn" Me.Head.Width = 40
'HeadDataGridViewTextBoxColumn ' Me.Head.DataPropertyName = "Head" Me.Head.HeaderText = "Head" Me.Head.Name = "Head" Me.Head.Width = 40