Infragistics文档打败了我,
我想做的就是使用List
水合ultraDataSource我目前正在使用onload来设置uDataSource1.Rows.SetCount(list.count) 并填写事件处理程序 private void uDataSource1_CellDataRequested(object sender,Infragistics.Win.UltraWinDataSource.CellDataRequestedEventArgs e) { FillGrid(发件人,E); } 如何将此ultraDataSource绑定到列表对象,以便在单击按钮时我可以接受更改后的列表作为新的ultraDataSource水合器?很难找到正确的用法。
注意我需要表中的标题具有正确的标题和其他列属性(例如按需加载),这是ultraDataSource的核心优势。 任何提示都会有所帮助
答案 0 :(得分:2)
要强制UltraDataSource触发ListChanged,您可以在按钮单击事件中调用SetCount方法的此重载:
public void SetCount(
int newCount,
bool forceNotifyListReset
)
有关此方法的更多信息,您可以找到here
但是,只有事先设置了UltraDataSource波段的列,才能使用此功能。如果你的ICollection包含不同的对象,每次你需要一点反射来设置像这样的列:
foreach (var property in typeof(MyClass).GetProperties().ToList())
{
this.ultraDataSource1.Band.Columns.Add(property.Name);
}
请记住,在这种情况下设置单元格值可能会非常棘手,并且需要在CellDataRequested事件处理程序中进行更多反射,如下所示:
var cellValue = ((List<MyClass>)data)[e.Row.Index];
e.Data = cellValue.GetType().GetProperty(e.Column.Key).GetValue(cellValue, null);
答案 1 :(得分:1)
请注意,如果您希望网格按需加载数据,则只需使用UltraDataSource。
另一个更简单的选择是将网格直接绑定到List。网格可以绑定到任何实现IList或IBindingList的对象。