Telerik RADGrid и сортировка - PullRequest
       28

Telerik RADGrid и сортировка

2 голосов
/ 30 сентября 2011

Я использую RADGridView для WPF для отображения некоторых данных.Он извлекается динамически из БД, поэтому я не знаю имен столбцов или типа данных, содержащихся в каждой ячейке.Я хочу позволить пользователю сортировать данные по каждому столбцу, когда он дважды щелкает заголовок столбца.

По какой-то причине сетка не сортируется.Это то, что я до сих пор.

private void SetEventHandlers()
        {
            if (_grid != null)
            {
                _grid.AddHandler(GridViewCellBase.CellDoubleClickEvent, new EventHandler<RadRoutedEventArgs>(OnCellDoubleClick), true);

            }
        }


private void OnCellDoubleClick(object sender, RoutedEventArgs e)
        {
            GridViewCellBase cell = e.OriginalSource as GridViewCellBase;
            if (cell != null && cell is GridViewHeaderCell)
            {
                SetSorting(cell);
            }
        }



private void SetSorting(GridViewCellBase cell)
        {
            GridViewColumn column = cell.Column;
            SortingState nextState = GetNextSortingState(column.SortingState);
            _grid.SortDescriptors.Clear();
            if (nextState == SortingState.None)
            {
                column.SortingState = SortingState.None;
            }
            else
            {
                _grid.SortDescriptors.Add(CreateColumnDescriptor(column, nextState));
                column.SortingState = nextState;
            }

        }

РЕДАКТИРОВАТЬ:

private ColumnSortDescriptor CreateColumnDescriptor(GridViewColumn column, SortingState sortingState)
        {
            ColumnSortDescriptor descriptor = new ColumnSortDescriptor();
            descriptor.Column = column;
            if (sortingState == SortingState.Ascending)
            {
                descriptor.SortDirection = ListSortDirection.Ascending;
            }
            else
            {
                descriptor.SortDirection = ListSortDirection.Descending;
            }


            return descriptor;
        }

1 Ответ

1 голос
/ 07 октября 2011

Оказалось, что мои данные RadGrid были привязаны к ObservableCollection. Сортировка функциональности самой сетки не сработала. Сортировка ObservableCollection была решением. Я закончил сортировку ObservableCollection с использованием linq.

...