DataGridView FaceboxColumn Validation
-
16-10-2019 - |
Вопрос
В DataGridView У меня есть Флакторы Databound. Анкет Но если я проверяю или снимаю несколько флажков, не все изменения сохраняются. (Это не запускает метод набора свойств на всех, возможно, на каждом 2 -м). Однако, если я после каждой фиксации флажки, нажмите на другую ячейку (столбец) перед следующим флажком, то все действия запустит методы установки. Таким образом, кажется, что валидация ячейки работает не на основе для каждой клетки, а на основе в соответствии с соглашением (для флажести). Итак, как вы решаете это?
Решение
Нашел ответ: DataGridView с проблемой ячейки флажки
Но, наверное, легкая альтернатива - поместить метод кнопки «Сохранить»:
DataGridView.EndEdit();
Другие советы
Не совсем ясно, что вы пробовали, а что не работает. Я предполагаю, что у вас есть приложение Winform и используете SQLDataSource, чтобы связать таблицу SQL-Server с вашей сеткой. В вашей базе данных есть полевое поле (бит), поэтому сетка автоматически генерирует DataGridViewCheckboxColumn. Вы пытаетесь сохранить все изменения, которые пользователь сделал, когда он нажимает на кнопку «Сохранить».
Все эти догадки правильно?
Все, что вам нужно сделать, это обновить свой набор данных/DataTable с помощью DataAdapter.
Private Sub BtnSaveChanges_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSaveChanges.Click
Me.FooTableAdapter.Update(DataSet1.Foo)
End Sub
MSD-Example: http://msdn.microsoft.com/en-use/library/fbk67b6z.aspx
Если изменения должны быть сохранены непосредственно в базу данных, вы можете обрабатывать CurrentItemChanged-Event привязки.
Private Sub FooBindingSource_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles FooBindingSource.CurrentItemChanged
Dim thisDataRow As DataRow = DirectCast(DirectCast(sender, BindingSource).Current, DataRowView).Row
If thisDataRow.RowState = DataRowState.Modified Then
Me.FooTableAdapter.Update(thisDataRow)
End If
End Sub