无法从xtragridview获取点击行的数据

时间:2014-08-28 14:11:19

标签: c# linq gridview devexpress row

private void gridControl1_Click(object sender, EventArgs e)
    {

        int rowHandle = gridView1.FocusedRowHandle;
        object myColumnValue = gridView1.GetRowCellValue(rowHandle, "PName Lastname");

    }

我使用dbml作为数据源,xtragridview作为gridview。 我的问题是我无法在gridview的运行设计器列标签中看到colums。所以,当我想在代码中使用列名时,我要编写在运行时在gridview上显示的列名。但他们似乎并非如此。我不熟悉使用LINQ。 GetDataRow()GetRow()等返回null。如何从gridview获取点击/聚焦的行数据?

1 个答案:

答案 0 :(得分:1)

首先:DevExpress拥有非常出色的帮助,他们通常会快速回答这些问题。

无论如何,这里是如何运作的:

首先不要使用Click功能,因为它会触发任何Click to the Component, 但是你只想点击一个单元格来获得价值(RowClickRowCellClick)。

在示例中,我实际上等待双击(e.Clicks == 2)

注意" DataEntry"是绑定到DataSource

时使用的Type

在我的示例中,它是这样的gridControlData.DataSource = source 来源的类型为List<DataEntry>

如果您不确定使用的是什么类型,请使用&#34;对象&#34;相反,然后使用Debug.Print(obj.GetType());

一旦你拥有你的对象(在你的情况下它可能是一个DataRow),那么你可以相应地使用该对象。

private void gridViewData_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
{
    if (e.Clicks == 2)
    {
        DataEntry entry = gridViewData.GetRow(e.RowHandle) as DataEntry;

        if (entry != null)
        {

            Debug.Print(entry.Number);
        }
    }
}

Addiditional note:字幕(列的名称)由DevExpress自动更改,因此例如Fieldname为&#34; Number_Children&#34;可能会出现在&#34; Number Children&#34;自动。