考虑以下图片
当我使用以下代码单击一个单元格时,我在图中所示的三个文本框中获得所选行值。
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控件中做同样的事情?
答案 0 :(得分:26)
这是我遵循的方式,
int[] selRows = ((GridView)gridControl1.MainView).GetSelectedRows();
DataRowView selRow = (DataRowView)(((GridView)gridControl1.MainView).GetRow(selRows[0]));
txtName.Text = selRow["name"].ToString();
您还可以使用selRows数组迭代选定的行。这里的代码描述了如何仅从第一个选定的行获取数据。您可以插入这些代码行以单击网格事件。
答案 1 :(得分:24)
您可以通过多种方式完成此操作。您可以使用数据绑定(典型地在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();
答案 2 :(得分:10)
我发现解决方案如下:
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();
}
答案 3 :(得分:3)
您使用的是哪一个网格? 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);
}
我的网格有一个绑定到它的联系人对象列表。每次单击一行时,我将所选行加载到_selectedContact。希望这可以帮助。您将找到许多有关使用其控件购买访问其支持和文档站点的信息。
答案 4 :(得分:1)
对于VB.Net
CType(GridControl1.MainView, GridView).GetFocusedRow()
对于C#
((GridView)gridControl1.MainView).GetFocusedRow();
示例通过linq绑定数据,因此请使用
Dim selRow As CUSTOMER = CType(GridControl1.MainView, GridView).GetFocusedRow()
答案 5 :(得分:0)
您所要做的就是使用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());
}
答案 6 :(得分:-1)
var rowHandle = gridView.FocusedRowHandle;
var obj = gridView.GetRowCellValue(rowHandle, "FieldName");
//For example
int val= Convert.ToInt32(gridView.GetRowCellValue(rowHandle, "FieldName"));