У нас есть привязка к базе данных XtraGrid в нашей форме Windows. Один из столбцов - это флажок. Проблема заключается в следующем: когда пользователи устанавливают флажок и нажимают кнопку «ОК», флажок, если он явно установлен, не считается установленным сеткой. Когда я это делаю (проходя по строкам):
isAllowed = Convert.ToBoolean(viewMain.GetRowCellValue(nRowCtr, "IsAllowed"))
Я возвращаюсь ложно. НО, если пользователь устанавливает флажок, а затем щелкает где-нибудь еще в форме или в другой строке в этой сетке, тем самым убирая фокус с отмеченного флажка, тот же код выше вернет True.
Мы будем очень благодарны за любое понимание того, как исправить это поведение.
Обходной путь найден. При настройках по умолчанию, когда пользователи нажимают на ячейку для ее редактирования, ячейка переходит в режим редактирования, загружает элемент управления редактором (в данном случае у меня элемент управления репозиторием CheckEdit) и изменяет значение элемента управления. (в данном случае проверяемое состояние). Если я нажимаю на другую строку или другой элемент управления, ячейка выходит из режима редактирования, фиксируя изменение элемента данных. Но если я нажму кнопку, мои изменения будут потеряны. Обходной путь - использовать событие CheckEdit CheckedChanged для закрытия редактора:
Private Sub edCheck_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles edCheck.CheckedChanged
gridYears.FocusedView.CloseEditor()
End Sub