如何获取DevExpress XtraGrid的选定行值?

请看下面的图片

在此处输入图像描述

当我使用以下代码单击一个单元格时,我在图中所示的三个文本框中获取所选行值。

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从我的一个应用程序中获取的一块。

 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); } 

我的网格有一个绑定到它的Contact对象列表。 每次单击一行时,我将所选行加载到_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()); } 
 var rowHandle = gridView.FocusedRowHandle; var obj = gridView.GetRowCellValue(rowHandle, "FieldName"); //For example int val= Convert.ToInt32(gridView.GetRowCellValue(rowHandle, "FieldName"));