Прервать сортировку в DataGridView, когда строка была отредактирована - PullRequest
0 голосов
/ 02 декабря 2010

У меня есть DataGridView с 2 столбцами.SortMode of first установлен на Automatic.

В этой сетке много строк, и когда я меняю значение в строке, например, с xyz на abc, я все еще в положении, где эта строка была.Отредактированная строка переходит наверх.

Я хочу прервать эту автоматическую сортировку, и я хочу сортировать вызовы, щелкнув левой кнопкой мыши по столбцу.Быть

Я нашел какое-то решение (код ниже + Я установил SortMode на Программно), но моя строка все еще прыгает: / Есть ли у кого-нибудь решение для решения этой проблемы?

private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        DataGridViewColumn newColumn =
        dataGridView1.Columns[e.ColumnIndex];

        SortOrder direction;
        if (dataGridView1.SortOrder == SortOrder.Ascending)
        {
            dataGridView1.Sort(newColumn,
            ListSortDirection.Ascending);
            direction = SortOrder.Ascending;
        }
        else
        {
            dataGridView1.Sort(newColumn,
            ListSortDirection.Descending);
            direction = SortOrder.Descending;
        }

        newColumn.HeaderCell.SortGlyphDirection = direction;    
    }
}

1 Ответ

0 голосов
/ 02 декабря 2010

Почему бы просто не отключить сортировку при захвате события редактирования вашего DataGridView?

private void dataGridView1_CellBeginEdit(object sender,
DataGridViewCellCancelEventArgs e)
{
  foreach (DataGridViewColumn column in dataGridView1.Columns)
      column.SortMode = DataGridViewColumnSortMode.NotSortable;
}

Тогда вы можете просто восстановить сортировку, вернув это поведение (восстановив его снова в событии RightClickвашей колонки или любого другого элемента контекстного меню)

...