0

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

患者数据网格视图示例

(在最终版本中,我希望隐藏 PatientID 列)

我想要做的是,当用户单击相应行中的 ANYWHERE 时返回 PatientID 的值(即用户单击“Doe”并且返回的值是“2”)。谁能给我一个提示如何做到这一点?我不认为有 valueMember 属性...我正在尝试 Rowindex 但它返回从顶部计数的行数的值(D'uh?!)

另外,有没有办法让用户在单击单个单元格时突出显示整行?

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

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

不过,这留下了我关于突出显示整行的第二个问题。

4

2 回答 2

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该值来访问该值,该值必须是可见的。但是,即使您隐藏了该列,您也可以使用这个。

于 2012-04-19T21:52:16.873 回答
0

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

DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
于 2012-04-19T21:55:42.640 回答