以下の絵を考えてみましょう
私は次のコードを使用してセルをクリックすると、図に示されている3つのテキストボックスに選択された行の値を取得します。
void dataGridView1_CellClick_1(object sender, DataGridViewCellEventArgs e) {
TBGRNo.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
TBSName.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
TBFName.Text = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
}
私の質問は、DevExpress XtraGridコントロールで同じことをどのように行うのですか??
これはいくつかの方法で行うことができます。データバインディングを使用できます(通常、InitializeComponent();の後に初期化されます)。
textBox1.DataBindings.Add(new Binding("Text", yourBindingSource,
"TableName.ColumnName", true, DataSourceUpdateMode.OnPropertyChanged));
またはDataLayoutControlを使用します(編集にテキストボックスを使用する場合は、このコンポーネントの使用方法を学ぶために時間をかけることをお勧めします。
または、これらのメソッドのいずれかから割り当てることにより、FocusedRowChangedで:
textBox1.Text = gridView1.GetDataRow(e.FocusedRowHandle)["Name"].ToString();
textBox1.Text = gridView1.GetFocusedDataRow()["Name"].ToString();
textBox1.Text = (gridView1.GetFocusedRow() as DataRowView).Row["Name"].ToString();
textBox1.Text = gridView1.GetFocusedRowCellValue("Name").ToString();
ここに私が従った方法があります、
int[] selRows = ((GridView)gridControl1.MainView).GetSelectedRows();
DataRowView selRow = (DataRowView)(((GridView)gridControl1.MainView).GetRow(selRows[0]));
txtName.Text = selRow["name"].ToString();
また、selRows配列を使用して、選択した行を反復処理できます。ここで、コードは最初に選択された行からのみデータを取得する方法を説明しています。これらのコード行を挿入して、グリッドのイベントをクリックできます。
私は次のように解決策を見つけました:
private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
{
TBGRNo.Text = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "GRNo").ToString();
TBSName.Text = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "SName").ToString();
TBFName.Text = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "FName").ToString();
}
そのグリッドの一つは、あなたはどちらを使用していますか? XtraGridやAspXGrid?これは、XtraGridを使用して私のアプリの1つから取ったものです。
private void grdContactsView_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
{
_selectedContact = GetSelectedRow((DevExpress.XtraGrid.Views.Grid.GridView)sender);
}
private Contact GetSelectedRow(DevExpress.XtraGrid.Views.Grid.GridView view)
{
return (Contact)view.GetRow(view.FocusedRowHandle);
}
私のグリッドは、それに結合された連絡先オブジェクトのリストを持っています。行がクリックされるたびに、選択した行を_selectedContactに読み込みます。お役に立てれば。サポートおよびドキュメントサイトにアクセスして、コントロール購入の使用に関する多くの情報を見つけることができます。
VB.Netの場合
CType(GridControl1.MainView, GridView).GetFocusedRow()
C#の場合
((GridView)gridControl1.MainView).GetFocusedRow();
linqによるデータのバインドの例
Dim selRow As CUSTOMER = CType(GridControl1.MainView, GridView).GetFocusedRow()
しなければならないことは、gridViewコントロールのGetFocusedRowCellValueメソッドを使用して、それをRowClickイベントに入れることだけです。
例えば:
private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
{
if (this.gvCodigoNombres.GetFocusedRowCellValue("EMP_dni") == null)
return;
MessageBox.Show(""+this.gvCodigoNombres.GetFocusedRowCellValue("EMP_dni").ToString());
}