Сортировка DataGridView по DataGridViewComboxBoxColumn - PullRequest
1 голос
/ 30 ноября 2009

Я хочу иметь возможность сортировать DataGridView с помощью ComboBoxColumn, чтобы я мог отображать группы на основе значения в ComboBoxColumn. Когда я щелкаю ComboBoxColumn, DataGridView не отвечает в отличие от других столбцов, которые являются TextBoxColumns. Это означает, что он не сортируется, когда я щелкаю заголовок столбца.

Как я могу предоставить эту функцию или мне нужно переопределить функциональность столбца своим собственным классом?

Ответы [ 3 ]

2 голосов
/ 01 декабря 2009

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

Весь код выделен ниже:

public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent();
        DataGridViewComboBoxColumn col = (DataGridViewComboBoxColumn) dataGridView1.Columns[1];
        DataGridViewComboBoxColumn col2 = (DataGridViewComboBoxColumn)dataGridView1.Columns[2];
        List<string> items = new List<string>(){"B", "C", "E", "A"};
        col.DataSource = items;
        col.SortMode = DataGridViewColumnSortMode.Automatic;
        col2.DataSource = items;
        col2.SortMode = DataGridViewColumnSortMode.Automatic;

        dataGridView1.Rows.Add(new string[] {"A", "B", "C", "D"});
        dataGridView1.Rows.Add(new string[] { "B", "C", "C", "F" });
        dataGridView1.Rows.Add(new string[] { "C", "B", "A", "A" });
    }        
}

В этом очень простом примере сортировка отлично работает для меня.

Возможно, вам понадобится опубликовать примеры кода, чтобы сузить разницу между вашим кодом.

Одна из возможных причин, о которой я могу подумать, - это привязка к списку строк, а не объектов.

В соответствии с документацией вы также можете предоставить свой собственный обработчик события SortCompare.

0 голосов
/ 02 октября 2013

Я сортирую DataGridViewComboBoxColumn по значению текста ComboBox, а не по идентификатору, упорядочивая записи в моем ComboBox. Я изменил источник ComboBox, чтобы отсортировать записи по значению, отображаемому (ORDER BY [value_displayed] ASC / DESC) в SQL. Это означает, что идентификаторы записей находятся в том же порядке, что и значения.

Например:

  • Несортированный ComboBox: 1: Фернандо, 2: Алекс, 3: Чарли

  • Сортировка ComboBox: 1: Алекс, 2: Чарли, 3: Фернандо

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

0 голосов
/ 30 ноября 2009

Имеет ли это или это Ссылка на URL вообще ??

Цитата из вышеупомянутого URL:

Сортировка столбцов данных в комбинированном списке по значению столбца связано тоже. Если вы используете datagridview показать текстовое представление идентификатор при сортировке столбца будет на id не текст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...