Как отсортировать заголовки столбцов в сетке данных по алфавиту? C # - PullRequest
4 голосов
/ 08 декабря 2008

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

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

sortedColumnNames.Sort();

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

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

Ответы [ 3 ]

3 голосов
/ 08 декабря 2008

Я не могу сказать, если ваша проблема в том, что 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++;
    }
}
0 голосов
/ 09 декабря 2008

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

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

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

0 голосов
/ 08 декабря 2008

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

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