Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2014, 17:28   #1
m9yt
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 108
По умолчанию Сортировка DataGridView

Добрый день.
Возникли проблемы с пониманием сортировки DataGridView.
Вычитал с msdn следующие вещи:
1) Программная сортировка
"Если элемент управления DataGridView связан с внешним источником данных путем задания свойства DataSource, перегрузка метода Sort(DataGridViewColumn,ListSortDir ection) не работает для несвязанных столбцов. Кроме того, если свойство VirtualMode имеет значение true, вызов этой перегрузки возможен только для связанных столбцов. Определить, является ли столбец связанным, можно исходя из значения свойства IsDataBound. Сортировка несвязанных столбцов в связанном режиме не поддерживается."

2) Пользовательская сортировка
"Перегрузка метода Sort(IComparer) работает, только если элемент управления DataGridView не связан с внешним источником данных, а свойство VirtualMode имеет значение false. Для настройки сортировки для столбцов, связанных с внешним источником данных, следует воспользоваться операциями сортировки, которые поддерживаются этим источником данных. В виртуальном режиме операции сортировки для несвязанных столбцов необходимо обеспечить самостоятельно."

Что имеется: DataGridView, для которой настроен источник данных.
Что нужно: Отсортировать один из столбцов в нужном мне порядке (в ячейках смешанный тип данных, например "строка + число").

Я так понимаю, что поставленную мною цель достичь невозможно, так как моя сортировка относится к пользовательской, но и в то же время есть связь с источником данных?
Как тогда быть?
m9yt вне форума Ответить с цитированием
Старый 11.07.2014, 08:42   #2
m9yt
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 108
По умолчанию

Делаю так:
Код:
table = table.AsEnumerable().OrderBy(x => x, _columnSorter).CopyToDataTable();
var bindingSource = new BindingSource();
bindingSource.DataSource = table;
this.dataGridView.DataSource = bindingSource;
где _columnSorter - мой класс компаратора.
Сортирует как надо, но к моему гриду прикручен комбобокс с выпадающими фильтрами.
И после сортировки вся фильтрация слетает из-за перепривязки отсортированного источника (без перепривязки не сортируется).

Можно ли как-то избежать данной перепривязки?
m9yt вне форума Ответить с цитированием
Старый 11.07.2014, 09:13   #3
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

В вашем случае нет.
eval вне форума Ответить с цитированием
Старый 11.07.2014, 10:10   #4
m9yt
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 108
По умолчанию

Можно - повторным переналожением предыдущего фильтра.
m9yt вне форума Ответить с цитированием
Старый 11.07.2014, 10:31   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

как "переналожение" коррелирует с вопросом "Можно ли как-то избежать данной перепривязки? " ?
eval вне форума Ответить с цитированием
Старый 11.07.2014, 10:39   #6
m9yt
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 108
По умолчанию

Да, зависимости нет.
Но я и не исключал вариантов решения, когда перепривязку можно оставить.
m9yt вне форума Ответить с цитированием
Старый 11.07.2014, 10:42   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

ну вот то что вам я и сказал сразу, что раз у вас так то иначе никак
и эта - вот сие var bindingSource = new BindingSource(); постояннор делать нужды нет
собственно и сам BindingSource тут нужен ли..

Последний раз редактировалось eval; 11.07.2014 в 10:45.
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] druger Помощь студентам 0 20.04.2012 15:49
Сортировка данных в dataGridView energet Visual C++ 0 11.01.2012 13:23
Сортировка по нескольким столбцам datagridview zakaev C# (си шарп) 0 18.10.2011 22:03
DataGridView Ramirag C# (си шарп) 0 14.08.2011 11:57
c# + datagridview MAcK Общие вопросы .NET 2 06.06.2008 15:57