Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Отмена удаления сторки в DataGrid Добавлено: 03.12.03 15:26  

Автор вопроса:  AlexanderBondarenko

В VB.NET могу решить вроде банальную задачку со стандартным DataGrid.

При поытке пользоватоля удалить запись я хочу вывести сообщение "Уверен?" и если пользователь ответит "Нет" то отменить удаление.

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 AlexanderBondarenko



Вопросов: 2
Ответов: 4
 Профиль | | #1 Добавлено: 03.12.03 16:57

Извените ошибка в вопросе. Я хотел написать, что у меня НЕ пролучилось отменить удаление строк в DataGrid.

Пожалуйста помогите кто чем может.

Ответить

Номер ответа: 2
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #2
Добавлено: 04.12.03 11:41
Путём курения MSDN у класса DataTable было найдено событие
RowDeleting. Подписывайся на него и, если строку удалять не надо, в
обработчике события ставь аргумент Action равным
DataRowAction.Rollback.

Ответить

Номер ответа: 3
Автор ответа:
 AlexanderBondarenko



Вопросов: 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-сайт: www.vbnet.ru
 Профиль | | #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

Сам спросил сам ответил.

мое решение отмены удаления в 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
Автор ответа:
 AlexanderBondarenko



Вопросов: 2
Ответов: 4
 Профиль | | #6 Добавлено: 04.12.03 17:15

Внутри обработчиков других обектов DataTable или DataRow методы DataGrid1 Refresh и Update не работают. А вот если воткнуть DataGrid1.Refresh() в обрабодчи кнопи на фломе, то все обновляется. Тоже самое если отсортировать строки кликнув заголовок столбца грида. Вот такая странная песня.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам