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

标签 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 的运行设计器的列选项卡中看不到列。因此,当我想在代码中使用列名时,我正在编写在运行时显示在 gridview 上的列名。但他们似乎不是真的。我不熟悉使用 LINQ。 GetDataRow() GetRow() 等返回空值。如何从 gridview 获取点击/聚焦行的数据?

最佳答案

首先:DevExpress 的Help 真的 super 棒,他们通常会很快回答这类问题。

无论如何,这是它的工作原理:

首先不要使用 Click 函数,因为它会在任何点击组件时触发, 但您只想点击单元格以获取值(RowClickRowCellClick)。

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

注意“DataEntry”是绑定(bind)到数据源时使用的类型

在我的例子中是这样的gridControlData.DataSource = source 其中 source 的类型为 List<DataEntry> .

如果您不确定使用的是什么类型,请改用“对象”,然后使用 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);
        }
    }
}

补充说明:标题(列的名称)由 DevExpress 自动更改,因此例如字段名称为“Number_Children”的列可能会自动显示为“Number Children”。

关于c# - 无法从 xtragridview 获取点击行的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25550953/

相关文章:

c# - 如何在linq和EF中做一个简单的搜索功能

c# - Asp.Net Core 2 中是否有相当于 "HttpContext.Response.Write"的值?

android - 从 GridView 启动 Activity

c# - 如何像 Repeater 一样运行 GridView?

java - Android - 如何在 GridView 中选择一个项目?

c# - oData v4 (6.1.0) 在 $expand 中嵌套了 $filter

c# - 字符的正则表达式

c# - 分层数据的高级LINQ分组和投影查询(EF 4.0 + LINQ + ASP.NET MVC + HighCharts)

c# - 如何使用 LINQ 正确折叠?

C# 如何使用 LINQ 获取特定列标题名称下的所有单元格数据