首页 > 解决方案 > GetDataRow 为有效的 rowHandle 返回 null

问题描述

当用户从弹出菜单中选择一个选项时,我试图从网格中获取选定的行。我有以下代码

    private void gridView1_PopupMenuShowing(object sender, 
    DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e)
    {
        if (e.MenuType != DevExpress.XtraGrid.Views.Grid.GridMenuType.Row) return;
        var item = new DXMenuItem("Delete");
        item.Click += (o, args) =>
        {
            var rowHandles = gridView1.GetSelectedRows();
            foreach (var rowHandle in rowHandles)
            {
                System.Data.DataRow row = gridView1.GetDataRow(rowHandle); 
                // debugger shows that rowHandle = 1 
                if (row == null)
                {
                    Console.WriteLine("how so?");  // breaks here
                }
            }
        };
        e.Menu.Items.Add(item);
    }

当我在调试器中运行时,我希望该行有效,但它为空。

标签: c#event-handlingdevexpress-gridcontrol

解决方案


事实证明,因为我让网格从绑定源获取数据并且我正在设置绑定源

文档解释说 GetDataRows 将返回 null

如果 View 的数据源是自定义的对象集合,GetDataRow 方法返回 null


推荐阅读