Ответ заключается в том, что AdvancedDataGrid не создан, чтобы делать то, что я хочу.
Отлично подходит для группировки данных с общими значениями; это плохо для группировки данных, где фактические родительские элементы существуют в виде самих строк. Я также требую, чтобы сортировка и фильтрация применялись только к родительским элементам (на основе их собственных данных); любой видимый родитель может показать своих детей, а дети никогда не сортируют.
Мое двухэтапное решение - сначала обработать данные, перебрав их и создав массив родительских элементов и добавив к ним свойство массива children
, которое содержит дочерние элементы. Обратите внимание, что это массивы ссылок; Я не копирую фактические данные.
Затем я применяю любую сортировку и фильтрацию к родительскому массиву (возможно, с помощью оболочки ArrayCollection) и перебираю родителей, копируя видимых (и их дочерних элементов, если родитель отмечен expanded
) в массив отображения , Моя сетка использует массив отображения как простой (например, не сгруппированный) dataProvider. Пользовательское средство визуализации элементов будет создавать отступ для дочерних элементов и изменять свойство expanded
родительских элементов, что приведет к регенерации массива отображения.
Это не только более простое и интуитивно понятное решение, оно не требует от читателя или сопровождающего, чтобы понять особенности ADG (мой девиз: «Нет умного кода»).
Спасибо, Томас, за попытку. Я даю вашему ответу +1, хотя я не помечаю его как ответ.
Приветствия