Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DataGrid и сортировка в колонке 
:(
    Опции темы
Человек01
Дата 21.2.2009, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 20.2.2009
Где: Абакан, респ. Хак асия, Россия

Репутация: 2
Всего: 2



Есть DataGrid требуется сделать чтобы при выборе сортировки по любой колонке, сначала производилась сортировка по определенной колонке(например columnstandart), а уже потом по выбранной.

Для решения задачи видимо требуется создать свой класс(ExDataGrid) на основе DataGrid и обработать Sorting я сделал так:
Код

public ExDataGrid()
   : base()
{
   this.Sorting += new Microsoft.Windows.Controls.DataGridSortingEventHandler(ExDataGrid_Sorting);            
}

void ExDataGrid_Sorting(object sender, Microsoft.Windows.Controls.DataGridSortingEventArgs e)
{
    DataGridColumn colm = this.Columns[this.Columns.Count - 1]; /*Кстати как можно по имени взять колонку под именем columnstandart?*/
   ????????
   e.Handled = true;
}


Но вот в какую сторону капать дальше?
Видимо надо каким то образом создать System.ComponentModel.SortDescription 
и определить поведение самой колонки colm, но вот как это сделать, что то не соображу.

Может кто знает покажите, или пните в нужную сторону.


PM MAIL ICQ   Вверх
Человек01
Дата 22.2.2009, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 20.2.2009
Где: Абакан, респ. Хак асия, Россия

Репутация: 2
Всего: 2



Полурешение:
Оказалось что это до простого просто.

Прицеп такой:
после загрузки данных в DataGrid вызываем сортировку по любому столбцу, а далее если пользователь просто щелкает на колонке идет сортировка по заданной нами колонке в данном случае columnstandart. Но вот если он щелкнет с Shift по какой нибудь колонке то получается что наш обработчик пропускает данную обработку и отдает её стандартному обработчику, а тот зная что нажат Shift добавляет сортировку по выбранной колонке как сортировку второго уровня(не знал как выразиться сказал так).
Вот
Код

void ExDataGrid_Sorting(object sender, Microsoft.Windows.Controls.DataGridSortingEventArgs e)
{
    SortDescription sd = new SortDescription("columnstandart", ListSortDirection.Ascending);
    if ((Keyboard.Modifiers & ModifierKeys.Shift) != ModifierKeys.Shift)
    {
       this.Items.SortDescriptions.Clear();
       this.Items.SortDescriptions.Add(sd);
       e.Handled = true;
    }
}


Понятно что данная реализация не идеальна, хотелось бы чтоб при простом нажатии на колонке она обрабатывалась как я спрашивал в первом посте, но для этого надо обработать SortDescriptions и добавлять нужный порядок сортировок, но пока не стал делать т.к. возникла другая проблемка как связать данные двух колонок в одной таблице вот.




Это сообщение отредактировал(а) Человек01 - 22.2.2009, 14:42
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.