2012-04-19 46 views
0

我從數據庫加載到的dataGridView數據,有效果看起來像這樣:獲得PK值

Patients Data Grid View Sample

(在最終版本我寧願隱藏PatientID列)

我想要做的是,當用戶在相應行中的任何地方單擊時(即用戶單擊「Doe」並且返回值爲「2」),PatientID的返回值。任何人都可以給我一個提示如何做到這一點?我不認爲有valueMember屬性...我正在嘗試Rowindex,但返回從頂部算起的行數值(D'uh ?!)

此外,有沒有一種方法讓用戶突出整個點擊單個單元格時行?

編輯:哦,上帝​​,我在深夜花了幾個小時找到這一點,在早上,我放棄了,並張貼在這裏...只是爲了找到答案在5分鐘後:仍然

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

,這留下了我關於突出顯示整行的第二個問題。

回答

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來訪問該值,該值必須是可見的。但即使隱藏了列,您也可以使用這個。

+0

dataGridView1.CurrentRow.DataBoundItem [「DEVICE_ID」]讓我無法適用與[]索引到我假設你有型「對象」 – cja 2013-03-06 11:09:33

+0

@cja的表達一個DataView作爲數據源。在這種情況下,您應該像這樣將'DataBoundItem'投射到'DataRowView':'((DataRowView)dataGridView1.CurrentRow.DataBoundItem)[「device_id」]'。您還需要自行轉換返回的值。因爲它被稱爲「device_id」,我想它是'int'所以這樣做:'(int)((DataRowView)dataGridView1.CurrentRow.DataBoundItem)[「device_id」]' – 2013-04-01 10:05:39

0

對於第二個問題,將選擇模式設置爲FullRowSelect,並在用戶點擊完整行時突出顯示。您可以設置在設計或代碼這個屬性:

DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;