Задать вопрос

Как запретить автоматическую сортировку при добавлении записи в DataGridView C#?

На форме DataGridView и ComboBox, привязанный к одному из полей BindingSource, которое не отображается в DataGridView. Выглядит это так:

groupheadersBindingSource.Sort = "IsTrainer DESC, HeaderTitle ASC";

sportTypeComboBox.DisplayMember = "SportTitle";
sportTypeComboBox.ValueMember = "SportID";
sportTypeComboBox.DataSource = sportTypesBindingSource;
sportTypeComboBox.DataBindings.Add("SelectedValue", groupheadersBindingSource, "SportID");


При добавлении записи, основные поля задаются непосредственно в гриде, а SportType, выбирается из выпадающего списка. Проблема в том, что с текущими параметрами сортировки, когда дело доходит до выбора вида спорта, выполняется автоматическая сортировка списка в гриде и слетает указатель с редактируемой записи.
Вопрос: можно ли как-то предотвратить обновление сортировки при редактировании записи?
  • Вопрос задан
  • 3255 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@jimquery Автор вопроса
Пока что сделал Workaround:

Объявляем две переменные:
DataRowView editingRowView   = null;
bool addingRow = false;


После чего задаем в дизайнере:
groupHeadersBindingNavigator.AddNewItem = null;
dataGridView.AllowUserToAddRows = false;


Дальше при нажатии кнопки добавить запись в навигаторе:
editingRowView = (DataRowView)groupheadersBindingSource.AddNew();
addingRow = true;


И при нажатии:
void sportTypeComboBox_Click ..
{
if ((editingRowView != null) && (addingRow))
            {
                groupheadersBindingSource.Position = groupheadersBindingSource.Find("HeaderID", editingRowView.Row["HeaderID"]);
                addingRow = false;
                editingRowView = null;
            }
}

Вот такой костыль получился. При этом автоматическая сортировка осталась, но указатель с текущей позиции восстанавливается.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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