2

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

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

...

gridControl.DataSource = gridDataList;

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

谢谢。

4

1 回答 1

3

您可以使用以下方法(通过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; }
}
于 2012-11-12T06:43:11.450 回答