18

考虑下图

在此处输入图像描述

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

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 控件中做同样的事情?

4

7 回答 7

27

这是我遵循的方式,

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

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

于 2013-02-15T16:52:11.427 回答
26

您可以通过多种方式做到这一点。您可以使用数据绑定(通常在 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();
于 2012-10-08T07:52:52.360 回答
12

我发现解决方案如下:

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

在此处输入图像描述

于 2012-10-07T19:33:43.533 回答
4

您使用的是他们的哪一个网格?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 中。希望这可以帮助。您会在访问他们的支持和文档网站时找到很多关于使用他们的控件的信息。

于 2012-10-07T16:13:31.680 回答
1

对于 VB.Net

CType(GridControl1.MainView, GridView).GetFocusedRow()

对于 C#

((GridView)gridControl1.MainView).GetFocusedRow();

示例通过 linq 绑定数据所以使用

Dim selRow As CUSTOMER = CType(GridControl1.MainView, GridView).GetFocusedRow()
于 2015-02-14T16:25:49.407 回答
1

您所要做的就是使用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());            
}
于 2015-07-05T04:12:01.910 回答
-1
var rowHandle = gridView.FocusedRowHandle;

var obj = gridView.GetRowCellValue(rowHandle, "FieldName");

//For example  
int val= Convert.ToInt32(gridView.GetRowCellValue(rowHandle, "FieldName"));
于 2018-01-05T16:07:05.190 回答