Как отсортировать заголовки столбцов в сетке данных по алфавиту? C#

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

Я пробовал приведенный ниже код, но это не всегда работает, некоторые столбцы отсортированы неправильно. Спасибо за любую помощь с этим.

sortedColumnNames.Sort();

    foreach (DataGridViewColumn col in dataGridView1.Columns)
                    {
                        col.DisplayIndex = sortedColumnNames.IndexOf(col.HeaderText);
                    }

sortedColumnNames: Афины, Крит, Корфу, Кефалония, Миконос, Родос, Санторини, Скиатос, Занте

3 ответа

Я не могу сказать, если ваша проблема в том, что SortedColumnNames неправильно отсортировано (что не так), или если столбцам назначен другой порядок, чем в списке.

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

Как правило, я не связываюсь с членством или порядком в коллекции, которую я повторяю. Я реализую сортировку столбцов следующим образом:

void SortDataGridViewColumns(DataGridView dgv)
{
    var list = from DataGridViewColumn c in dgv.Columns
               orderby c.HeaderText
               select c;

    int i = 0;
    foreach (DataGridViewColumn c in list)
    {
        c.DisplayIndex = i++;
    }
}

Вы можете сделать это следующим образом:

  1. Добавить все столбцы в список tmpColumns
  2. Удалить все столбцы из dgv.Columns
  3. Сортировать tmpColumns по имени
  4. Добавьте столбцы обратно в dgv.Columns из tmpColumns и установите, пока он DisplayIndex, в следующие значения 0,1,2 и так далее.

Это не идеально, но это работает.

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

Другие вопросы по тегам