2015-03-26 11 views
0

Infragistics документация бьет меня,Infragistics UltraDataSource заселить от ICollection во время выполнения

Все, что я хочу сделать, это гидрат в ultraDataSource с Список

настоящее время я использую OnLoad установить uDataSource1.Rows.SetCount (list.count) и сделать заливку в обработчик событий личного недействительного uDataSource1_CellDataRequested (объект отправителя, Infragistics.Win.UltraWinDataSource.CellDataRequestedEventArgs е) { FillGrid (отправитель, е); } Как связать этот объект ultraDataSource с объектом списка, чтобы при нажатии кнопки я мог принять измененный список в качестве нового гидратора UltraDataSource? Правильного использования трудно найти.

Примечание. Мне нужны заголовки в таблице, чтобы иметь соответствующие надписи и другие свойства столбца (такие как загрузка по требованию), которые являются основными преимуществами ultraDataSource. Любые советы помогут

ответ

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

ultraDataSource1.Rows.Clear(); до setCount, также имеет тот же эффект, что и bool forceNotifyListReset в SetCount, спасибо за ваш ответ –

1

Обратите внимание, что вам нужно использовать UltraDataSource, если вы хотите, чтобы сетка загружала данные по запросу.

Другим, гораздо более простым вариантом было бы привязать сетку непосредственно к списку. Сетка может связываться с любым объектом, который реализует IList или IBindingList.