2012-04-19 11 views
0

私は効果はこのように見ていると、DataGridViewのにデータベースからロードされたデータを持っている:取得PK値

Patients Data Grid View Sample

(最終版では、私はPatientIDの列を非表示にすることを好む)

私がやろうとしているのは、ユーザーが対応する行のどこかをクリックしたとき(つまり、ユーザーが「Doe」をクリックし、返される値が「2」のとき)のPatientIDの戻り値です。誰かが私にこのことをどうやってヒントを与えることができますか?私はvalueMemberプロパティがあるとは思わない...私はRowindexを試していたが、それは上から数える行数の値を返す(D'uh ?!)

さらに、ユーザーが全体をハイライトする方法はある単一のセルをクリックすると

EDIT:ああ、神様は、私はちょうど5分後に答えを見つけるために...朝、私はあきらめたとここに掲載、これを見つけるために夜遅く、数時間を費やしてきた:

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

それは、行全体を強調表示することに関する私の2番目の質問を残す。

答えて

1

のDataGridViewは、いくつかのデータソース(DataView)にバインドされている場合、あなたはDataBoundItemプロパティを使用することができ、例えば

DGV.CurrentRow.DataBoundItem["PatientID"] 

または

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

または

DGVUnderlyingBindingSource.Current["PatientID"] 

の場合DataGridViewは厳密に型指定されたデータソースにバインドされています(例:BindingList)あなたはこのように上記を使用することができます:FullRowSelect

へのDataGridViewの SelectionModeプロパティを設定し、質問の後半部分について

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

または

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

または

((PatientType)PatientTypeBindingSource.Current).PatientID 

編集

その列を非表示にすると、編集からソリューションを使用することはできません。 .Cells[idx].FormattedValueを使用して値にアクセスするには、その値を表示する必要があります。しかし、列を非表示にしても、これを使うことができます。

+0

dataGridView1.CurrentRow.DataBoundItem [「DEVICE_ID」]私を与えます[]型の表現に「オブジェクト」 – cja

+0

@cjaでインデックスを適用することはできません私はあなたが持っていると仮定しますDataSourceとしての「DataView」。その場合、 '((DataRowView)dataGridView1.CurrentRow.DataBoundItem)[" device_id "]'のように 'DataBoundItem'を' DataRowView'にキャストしてください。また、戻り値自体をキャストする必要があります。"device_id"と呼ばれるので、私は 'int'だと思います。'(int)((DataRowView)dataGridView1.CurrentRow.DataBoundItem)["device_id"] ' –

0

2番目の質問では、選択モードをFullRowSelectに設定し、ユーザーがクリックすると完全な行が強調表示されます。あなたは、デザイナーまたはコードでこの属性を設定することができます

DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; 
関連する問題