Страница: 1 |
В VB.NET могу решить вроде банальную задачку со стандартным DataGrid. При поытке пользоватоля удалить запись я хочу вывести сообщение "Уверен?" и если пользователь ответит "Нет" то отменить удаление.
Извените ошибка в вопросе. Я хотел написать, что у меня НЕ пролучилось отменить удаление строк в DataGrid. Пожалуйста помогите кто чем может. Mой VB.net не пропускает cтроку: e.Action = DataRowAction.Rollback Пишет "Property Action id Readonly" Сам спросил сам ответил. мое решение отмены удаления в DataGrid такое: Создаем наследника от DataGrid и у наследника переопределяю метод ProcessCmdKey Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean If keyData = Keys.Delete Then Dim i As Integer Dim Selected As Boolean = False Dim Count As Integer = CType(Me.DataSource, DataTable).Rows.Count For i = 0 To Count - 1 If Me.IsSelected(i) Then Selected = True Exit For End If Next Return Selected AndAlso (MsgBox("Удалять строки?", MsgBoxStyle.YesNo) = MsgBoxResult.No) Else Return False End If End Function Не совсем красиво но работает. Кто знает еще варианты??? Внутри обработчиков других обектов DataTable или DataRow методы DataGrid1 Refresh и Update не работают. А вот если воткнуть DataGrid1.Refresh() в обрабодчи кнопи на фломе, то все обновляется. Тоже самое если отсортировать строки кликнув заголовок столбца грида. Вот такая странная песня. Страница: 1 |
Вопрос: Отмена удаления сторки в DataGrid
Добавлено: 03.12.03 15:26
Автор вопроса: AlexanderBondarenko
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
AlexanderBondarenko
Вопросов: 2
Ответов: 4
Профиль | | #1
Добавлено: 03.12.03 16:57
Номер ответа: 2
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #2
Добавлено: 04.12.03 11:41
Путём курения MSDN у класса DataTable было найдено событие
RowDeleting. Подписывайся на него и, если строку удалять не надо, в
обработчике события ставь аргумент Action равным
DataRowAction.Rollback.
Номер ответа: 3
Автор ответа:
AlexanderBondarenko
Вопросов: 2
Ответов: 4
Профиль | | #3
Добавлено: 04.12.03 15:33
Номер ответа: 4
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #4
Добавлено: 04.12.03 16:26
Гм.. точно.. Засада полная! Зачем же они тогда сделали 2 события
RowDeleting и RowDeleted, если всё равно отменить удаление нормально
не получается?
Вот такое придумал:
Private Sub RowDeleting(ByVal sender As Object, ByVal e As System.Data.DataRowChangeEventArgs)
If MessageBox.Show("Сохранить?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
e.Row.Table.AcceptChanges()
Else
e.Row.Table.RejectChanges()
End If
End Sub
Только вот после этого надо заставить DataGrid обновить данные. Как
это сделать? Refresh и Update только перерисовывают окно грида...
Номер ответа: 5
Автор ответа:
AlexanderBondarenko
Вопросов: 2
Ответов: 4
Профиль | | #5
Добавлено: 04.12.03 16:35
Номер ответа: 6
Автор ответа:
AlexanderBondarenko
Вопросов: 2
Ответов: 4
Профиль | | #6
Добавлено: 04.12.03 17:15