c# - 使用接口(interface)将行添加到 XtraGrid

标签 c# gridview interface devexpress xtragrid

我正在为网格的 DataSouce 使用 BindingList,如下所示:

private BindingList<IPeriodicReportGroup> gridDataList = 
    new BindingList<IPeriodicReportGroup>();

...

gridControl.DataSource = gridDataList;

我将主视图的OptionsBehaviour 属性AllowDeleteRows 和AllowAddRows 设置为true,并将NewItemRowPosition 设置为Bottom。当我单击空行添加数据时,我收到一个异常,因为我的界面中没有构造函数 - 这是有道理的 -。有一个简单的方法可以解决这个问题吗?我认为这可能与处理 InitNewRow 事件有关,但我不太确定如何从那里开始。

谢谢。

最佳答案

您可以使用以下方法(通过 BindingList.AddingNew 事件)在 BindingList 级别完成任务:

    gridView1.OptionsBehavior.AllowAddRows = DevExpress.Utils.DefaultBoolean.True;
    gridView1.OptionsBehavior.AllowDeleteRows = DevExpress.Utils.DefaultBoolean.True;
    gridView1.OptionsView.NewItemRowPosition = NewItemRowPosition.Bottom;
    //...
    var bindingList = new BindingList<IPerson>(){
        new Person(){ Name="John", Age=23 },
        new Person(){ Name="Mary", Age=21 },
    };
    bindingList.AddingNew += bindingList_AddingNew; //  <<--
    bindingList.AllowNew = true;
    gridControl1.DataSource = bindingList;
}

void bindingList_AddingNew(object sender, AddingNewEventArgs e) {
    e.NewObject = new Person(); //   <<-- these lines did the trick
}
//...
public interface IPerson {
    string Name { get; set; }
    int Age { get; set; }
}
class Person : IPerson {
    public string Name { get; set; }
    public int Age { get; set; }
}

关于c# - 使用接口(interface)将行添加到 XtraGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13315076/

相关文章:

java - Java 中的泛型/接口(interface)和树结构

c# - 为什么我不能覆盖我的接口(interface)方法?

c# - 有没有办法在 C# 中以字节为单位告知 UTF-8 编码字符串的长度?

c# - BOT 不在网络聊天中运行

c# - 将小数从 LINQ 查询转换为货币

c# - 从代码隐藏访问 GridView 标签字段

c# - 使用 MVVM 模式(特别是使用 MVVM Light),如何实现不仅仅是基元的模型?

c# - 不在循环内执行switch语句,并且循环不循环

c# - 如何为页脚表格文本框设置比较验证器?

android - 登录界面与 Firebase 奇怪的行为