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

kas*_*hif 16 c# devexpress xtragrid winforms

请看下面的图片

在此输入图像描述

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

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();
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:我将如何在DevExpress XtraGrid控件中做同样的事情?

mil*_*ili 26

这是我遵循的方式,

int[] selRows = ((GridView)gridControl1.MainView).GetSelectedRows();
DataRowView selRow = (DataRowView)(((GridView)gridControl1.MainView).GetRow(selRows[0]));
txtName.Text = selRow["name"].ToString();
Run Code Online (Sandbox Code Playgroud)

您还可以使用selRows数组迭代选定的行.这里的代码描述了如何仅从第一个选定的行获取数据.您可以插入这些代码行以单击网格的事件.

  • 是的,你的答案更简单。但我试图从所有选定的行(多选)中获取详细信息。所以我更改了这个答案以符合您的问题。所以谢谢你的回答。我希望这可能对某人有所帮助! (2认同)

Sti*_*tig 24

您可以通过多种方式执行此操作.您可以使用数据绑定(典型地在InitializeComponent()之后初始化;)

textBox1.DataBindings.Add(new Binding("Text", yourBindingSource, 
                    "TableName.ColumnName", true, DataSourceUpdateMode.OnPropertyChanged));
Run Code Online (Sandbox Code Playgroud)

或使用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();
Run Code Online (Sandbox Code Playgroud)


kas*_*hif 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();            
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Sai*_*han 5

您使用的是他们的哪一个网格?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);
}
Run Code Online (Sandbox Code Playgroud)

我的网格有一个绑定到它的联系人对象的列表。每次单击一行时,我都会将所选行加载到 _selectedContact 中。希望这可以帮助。访问他们的支持和文档网站,您会发现有关使用他们的控件的大量信息。