powered by simpleCommunicator - 2.0.34     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как апдейтить данные в гриде?
4 сообщений из 4, страница 1 из 1
Как апдейтить данные в гриде?
    #32270765
Alvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я делаю так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
    Public Sub SaveDataGrid(ByVal grid As DataGrid, ByVal forecast_period As Date)
        Dim table As DataTable = grid.DataSource
        Dim row As DataRow

        'Dim tableDeleted As DataTable = table.GetChanges(DataRowState.Deleted)
        'If Not tableDeleted Is Nothing Then
        'For Each row In tableDeleted.Rows
        'Me.DeleteExcise(row( "excise_id" )) 
        'Next
        'End If

        Dim tableInserted As DataTable = table.GetChanges(DataRowState.Added)
        If Not tableInserted Is Nothing Then
            For Each row In tableInserted.Rows
                Me.InsertExcise(row( "trade_type_id" ), row( "product_id" ), row( "unit_id" ), _
                row( "currency_id" ), row( "duty" ), forecast_period) 'row( "forecast_period" )
            Next
        End If

        Dim tableUpdated As DataTable = table.GetChanges(DataRowState.Modified)
        If Not tableUpdated Is Nothing Then
            For Each row In tableUpdated.Rows
                Me.UpdateExcise(row( "excise_id" ), row( "unit_id" ), row( "currency_id" ), _
                row( "duty" ))
            Next
        End If
        table.AcceptChanges()
    End Sub


Все работает, за исключением закомментированного кода, а именно удаление строк. Когда в цикле пробегаю, то вылетает ошибка что нельзя обратиться к элементам удаленных строк

Но как же тогда это делает DataAdapter.Update метод?

Решил эту проблему с помощью обработчика события DataTable RowDeleting

Код: plaintext
1.
2.
3.
    Private Sub Row_Deleting(ByVal sender As Object, ByVal e As DataRowChangeEventArgs)
        Me.DeleteExcise(e.Row( "excise_id" ))
    End Sub


Но это не совсем подходит, так как в первом случае код апдейтится по нажатию на кнопку, а во втором без оного и без возможности отмены...

Подскажите что не так?
...
Рейтинг: 0 / 0
Как апдейтить данные в гриде?
    #32277654
Sergey Pikhulya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При запросе значения столбца используйте DataRowVersion.
...
Рейтинг: 0 / 0
Как апдейтить данные в гриде?
    #32277815
Са_ша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Грабли стандартные, сам на них наступал. Кароче если обрабатываешь строки, надо вставить проверку состояния, типа такой:

Код: plaintext
1.
2.
if dr.RowState <> DataRowState.Deleted then
'блок твоих операций
end if
...
Рейтинг: 0 / 0
Как апдейтить данные в гриде?
    #32280709
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
адаптер поступает примерно так
Код: plaintext
1.
2.
3.
4.
5.
Dim tableDeleted As DataTable = table.GetChanges(DataRowState.Deleted)
If Not tableDeleted Is Nothing Then
  For Each row In tableDeleted.Rows
    Me.DeleteExcise(row( "excise_id" , DataRowVersion.Original)) 
  Next
End If
и ведь работает без всяких исключений
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как апдейтить данные в гриде?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]