2011-12-19 21 views
1

DataTableは、コード内でdataGridviewにバインドされています。データテーブル内のDataRowの列値を取得する方法

データベースからデータを取得すると、gridviewは正常に動作します。それはデータで満たされます。 私がしたいのは、指定された行の主キー値を取得することです。

例:

PK   Address   Phone 
1   xxxyyyzzz...  1234567 
2   aaabbbccc...  2345678 

私が欲しいものはこれです。ユーザーは任意の行をクリックし、ボタンをクリックしていくつかのものを追加します。 それから私はPK値を取得し、他のものを行います。

私はそれをどのように行うことができますか?

+0

ちょうど注意してください:datarowのインデックスは、あなたの特殊なケースでは多分、おそらくあなたがレコードを削除するときに異なるでしょう注文を変更することができます。 ** "指定された行の"とはどういう意味ですか?** –

+0

データベースからデータを選択すると、データテーブルを作成する前にpkカラムも選択していませんか? – Icarus

+0

@TimSchmelter こんにちはTim。はい、私は知っている、私が必要なのは、指定された行のPK値です。 –

答えて

3

あなたはこの値を取得する方法と時期を指定できますか?

int index = dt.Rows.IndexOf(row); 

をしかし、私はそれのポイントがどうなるかわからない、あなたはすでに指定された行を持っている場合は、なぜあなたはちょうどrow[columnName]経由でPKを得ることができません。

あなたはこれを行うことができますか?

しかし、これはforループをループするだけでなく、リソースをより多く消費します。

dataGridViewにバインドする前または後にこれが必要ですか?異なるdataGridView行から値を取得する必要がある場合。あなたがそうのように選択された行を取得することができます

::あなたの編集のために

あなたが行を選択するチェックボックスを使用してのようないくつかの他の方法でそれをやっている場合

if (yourDataViewGrid.SelectedRows.Count == 1) 
{ 
Int pk = yourDataViewGrid.Rows[yourDataViewGrid.SelectedRows[0].Index].Cells["PK"].Value.ToString(); 
} 

、あなた

foreach (DataGridViewRow row in YourDataGridView.Rows) 
     { 

      if ((Boolean)((DataGridViewCheckBoxCell)row.Cells["CheckBoxName"]).FormattedValue) 
      { 
       Int pk = rows.Cells["PK"].Value.ToString(); 
      } 

     } 
+0

こんにちはDOTang。 はい私は質問を変更しました。 はい、datagridviewから値を取得する必要があります。 –

+0

@Un_NatMenDim私の答えを更新しました。 – SventoryMang

+0

ありがとうございます。正常に動作します... –

2

DataGridViewコントロールは、DataViewクラスを使用してDataTableにバインドされます。あなたはDataGridViewRow

のDataRowを12あなたが探している指標である
var vrow = (DataRowView)grid.Rows[12].DataBoundItem; // get the bound object 
var drow = vrow.Row; // the Row property references the real DataRow 

を取得するには、このようなものを使用することができます。場合によっては、DataSourceプロパティをDataViewに明示的に設定し、フォームへの参照を保持することがあります。ビューはデータのソートも知っているでしょう

var view = new DataView(table); 
grid.DataSource = view; 
関連する問題