Вопрос по .net, sorting, c#, winforms, datagridview – Сортировка DataGridView по Column.DisplayMember

2

у меня естьDataGridView с несколькимиDataGridViewComboBoxColumnгде фактическое значение привязано к идентификатору, ноDisplayMember является аналогом строки в таблице поиска. Я пытаюсь сделать так, чтобы при сортировке по этому столбцу сортировка осуществлялась на основеDisplayMember, неValueMember, Я знаю, что это было решено вэтот вопрос но ответ был меньше, чем в глубине, и я не понял его.

То, что я пробовал до сих пор

Binding to the SortCompare event but discovered it isn't fired on a databound column. Manually sorting on the ColumnHeaderMouseClick event but rows in a DataGridViewRowCollection are read-only and I can't programatically insert rows (while swapping) on a databound collection. Creating a hidden DataGridViewTextBoxColumn where the cells are automatically set to the DisplayMember of the original column then attempting to sort that column instead. However, a databound collection cannot be sorted based on an unbounded column.

Edit: Чтобы уточнить: я пытаюсь отсортировать всеDataGridView на основеDisplayMember из списков, не сортировать сами списки.

Как я могу сортироватьDataGridView на основеDisplayMember из базы данныхDataGridViewComboBoxColumn?

Вы можете отсортировать его при запросе самой таблицы? Как попросить sql сделать свою работу? nawfal
Вы не связываете свой dgv с данными или так? В таком случае, как вы заполняете данные? Я полагаю, вы получаете значения из базы данных, не так ли? nawfal
О, я упустил момент, когда вы ищете сортировку по списку, а не по строкам GDV. В таком случае, как вы получаете таблицу соответствия? Разве невозможно отсортировать таблицу поиска? nawfal
Может быть? Я знаю оператор SQL, который мне нужно использовать, но я не уверен, как вызывать SQL напрямую в DataGridView. Mike Cluck
Мне жаль, если я сделал это неясным. Да, DataGridView привязывается к таблице данных, а затем комбинированные списки связываются с таблицами поиска, используя идентификаторы с первого раза. Но у меня это установлено автоматически, я не связываю их программно. Mike Cluck

Ваш Ответ

1   ответ
2

вам нужно создать дополнительный столбец в вашем DataSet для хранения значения DisplayMember. Затем вы создаете невидимую границу DataGridViewColumn и привязываете ее к этому дополнительному столбцу DataSet. Тогда это связанный столбец, и выcan программно сортировать по нему.

Вопрос, на который вы ссылаетесь, делает то же самое, только это решение генерирует текст отображаемого элемента в SQL перед его возвратом в приложение.

Вы бы подумали, что это будет просто, не так ли? :)

Похожие вопросы