Страница: 1 |
Вопрос: Отмена удаления сторки в DataGrid | Добавлено: 03.12.03 15:26 |
Автор вопроса: ![]() |
В VB.NET могу решить вроде банальную задачку со стандартным DataGrid. При поытке пользоватоля удалить запись я хочу вывести сообщение "Уверен?" и если пользователь ответит "Нет" то отменить удаление. |
Ответы | Всего ответов: 6 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 4 |
Профиль | Цитата | #1 | Добавлено: 03.12.03 16:57 |
Извените ошибка в вопросе. Я хотел написать, что у меня НЕ пролучилось отменить удаление строк в DataGrid. Пожалуйста помогите кто чем может. |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 326066673 Вопросов: 368 Ответов: 5968 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 04.12.03 11:41 |
Путём курения MSDN у класса DataTable было найдено событие RowDeleting. Подписывайся на него и, если строку удалять не надо, в обработчике события ставь аргумент Action равным DataRowAction.Rollback. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 4 |
Профиль | Цитата | #3 | Добавлено: 04.12.03 15:33 |
Mой VB.net не пропускает cтроку: e.Action = DataRowAction.Rollback Пишет "Property Action id Readonly"
|
Номер ответа: 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 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 4 |
Профиль | Цитата | #5 | Добавлено: 04.12.03 16:35 |
Сам спросил сам ответил. мое решение отмены удаления в 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 Не совсем красиво но работает. Кто знает еще варианты??? |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 4 |
Профиль | Цитата | #6 | Добавлено: 04.12.03 17:15 |
Внутри обработчиков других обектов DataTable или DataRow методы DataGrid1 Refresh и Update не работают. А вот если воткнуть DataGrid1.Refresh() в обрабодчи кнопи на фломе, то все обновляется. Тоже самое если отсортировать строки кликнув заголовок столбца грида. Вот такая странная песня. |
Страница: 1 |
|