我正在为我的网格DataSouce使用BindingList,如下所示:
private BindingList<IPeriodicReportGroup> gridDataList =
new BindingList<IPeriodicReportGroup>();
...
gridControl.DataSource = gridDataList;
我将主视图的OptionsBehaviour属性AllowDeleteRows和AllowAddRows设置为true,将NewItemRowPosition设置为Bottom。当我点击空行添加数据时,我得到一个异常,因为我的界面中没有构造函数 - 这是有道理的。有一个简单的方法吗?我认为它可能与处理事件InitNewRow有关,但我不太确定如何从那里开始。
感谢。
答案 0 :(得分: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; }
}