从数据网格视图获取PK值

时间:2012-04-19 21:43:25

标签: c# datagridview

我有一个从数据库加载到dataGridView的数据,效果如下:

Patients Data Grid View Sample

(在最终版本中我更愿意隐藏PatientID列)

我尝试做的是当用户点击相应行中的ANYWHERE时返回PatientID的值(即用户点击" Doe"返回的值是" 2" )。谁能给我一个提示怎么做?我不认为有值会员属性......我正在尝试Rowindex但是从顶部返回行数的值(D'呃?!)

此外,用户在单击单个单元格时是否可以突出显示整行?

编辑:哦,上帝​​,我已经深夜花了几个小时找到这个,早上我放弃并张贴在这里......只是为了在5分钟后找到答案:

string test = dataGridView1.Rows[e.RowIndex].Cells["PatientID"].FormattedValue.ToString();

尽管如此,这仍然是我强调整行的第二个问题。

2 个答案:

答案 0 :(得分:1)

如果datagridview绑定到某个数据源(DataView),则可以使用DataBoundItem属性,例如

DGV.CurrentRow.DataBoundItem["PatientID"]

DGV.SelectedRows[0].DataBoundItem["PatientID"]

DGVUnderlyingBindingSource.Current["PatientID"]

如果DataGridView绑定到强类型数据源(例如BindingList),那么您可以像这样使用上面的内容:

((PatientType)DGV.CurrentRow.DataBoundItem).PatientID 

((PatientType)DGV.SelectedRows[0].DataBoundItem).PatientID

((PatientType)PatientTypeBindingSource.Current).PatientID

关于问题的第二部分,将DataGridView的SelectionMode属性设置为FullRowSelect

修改

如果隐藏该列,则无法使用编辑中的解决方案。要使用.Cells[idx].FormattedValue访问该值,该值必须可见。但即使你隐藏了这个列,也可以使用这个。

答案 1 :(得分:0)

对于第二个问题,将选择模式设置为FullRowSelect,当用户点击它时,将突出显示整行。您可以在设计器或代码中设置此属性:

DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;