0x49D1

0L4g0YDQsNC30YDQsNCx0L7RgtC60LUsINC00LvRjyDRgNCw0LfRgNCw0LHQvtGC0YfQuNC60L7QsiA=

Problem/Solution: WPF Toolkit DataGrid Filtering


Есть такой неплохой проект на codeproject.com, в котором реализован клиентский фильтр в WPF Toolkit DataGrid. Все неплохо, но обнаружилось, что даже его последняя ревизия перестает работать, если источник данных пуст. То есть мы знаем его тип, но в нем нет элементов. Фильтр начинает тупить из-за того, что нет проверки на такое условие.

Исправляется это простым добавлением такого условия в DataGridColumnFilter.cs:

        private Type getItemSourceElementType(out bool typeInitialized)
        {
            typeInitialized = false;

            Type elementType = null;

            IList l = (DataGridItemsSource as IList);

            if (l != null)
                if (l.Count > 0)
                {
                    object obj = l[0];

                    if (obj != null)
                    {
                        elementType = l[0].GetType();
                        typeInitialized = true;
                    }
                    else
                        elementType = typeof(object);
                }
                else
                    elementType = l.GetType().GetGenericArguments()[0];

            if (l == null)
            {
                ListCollectionView lw = (DataGridItemsSource as ListCollectionView);
                if (lw != null && lw.SourceCollection != null)
                    if (lw.Count >= 0)
                    {
                        object obj = lw.CurrentItem;

                        if (obj != null)
                        {
                            elementType = lw.CurrentItem.GetType();
                            typeInitialized = true;
                        }
                        else
                            elementType = typeof(object);
                    }
                    else
                        elementType = lw.SourceCollection.GetType().GetGenericArguments()[0];
            }

            return elementType;
        }

Попробую поддерживать этот проект в будущем(если будем с ним работать). Форк тут:
bitbucket
UPD:
*добавил AND и OR (&, |)
*заменил DatePicker на DateTimePicker

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: