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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка DataGridView 
V
    Опции темы
m9yt
Дата 9.7.2014, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 27.2.2010

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



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

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

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

Я так понимаю, что поставленную мною цель достичь невозможно, так как моя сортировка относится к пользовательской, но и  в то же время есть связь с источником данных?
Как тогда быть?

Это сообщение отредактировал(а) m9yt - 9.7.2014, 16:26
PM MAIL   Вверх
m9yt
Дата 11.7.2014, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 27.2.2010

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



Делаю так:
Код

table = table.AsEnumerable().OrderBy(x => x, _columnSorter).CopyToDataTable();
var bindingSource = new BindingSource();
bindingSource.DataSource = table;
this.dataGridView.DataSource = bindingSource;


где _columnSorter - мой класс компаратора.
Сортирует как надо, но к моему гриду прикручен комбобокс с выпадающими фильтрами.
И после сортировки вся фильтрация слетает из-за перепривязки отсортированного источника (без перепривязки не сортируется).

Можно ли как-то избежать данной перепривязки?
PM MAIL   Вверх
m9yt
Дата 11.7.2014, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 27.2.2010

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



Решил проблему переналожением старого фильтра после перепривязки.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




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


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

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