【问题标题】:Can't get clicked row's data from xtragridview无法从 xtragridview 获取点击行的数据
【发布时间】:2014-10-22 10:37:48
【问题描述】:
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() 等返回 null。如何从 gridview 中获取点击/聚焦行的数据?

【问题讨论】:

    标签: c# linq gridview devexpress row


    【解决方案1】:

    首先:DevExpress 的帮助真的很棒,他们通常会快速回答此类问题。

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

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

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

    注意“DataEntry”是绑定到DataSource时使用的Type

    在我的示例中是这样的 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 会自动更改 Captions(列的名称),因此例如字段名称为“Number_Children”的列可能会自动显示为“Number Children”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多