我正在为网格的 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/