2016-10-07 2 views
0

У меня есть UltraGrid в моем проекте, и у меня есть функция обновления в форме, чтобы обновлять данные в базе данных, где находятся данные.Установить строку RowState строки DataTable для удаления

Данные в сетке хранятся как DataTable. Если строка существующих данных удаляется из UltraGrid, я хочу иметь возможность установить RowState этой строки в DataTable в «RowState.Deleted , so that in the Update function I can check the RowState`, а если это удаленная строка, а затем удалить ее, в противном случае - обновить данные.

Как я могу это сделать? До сих пор у меня есть код ниже, но число возвращаемых строк равно 1 (или текущее количество строк в сетке), а не 2 (номер, который был до того, как я удалил одну строку).

Как и где в коде установить RowState из удаленной строки в RowState.Deleted? Есть ли альтернативный способ сделать это, используя UltraGrid?

dsProducts.Tables.Add(commDt.Copy) -- commDt is the DataTable linked to the UltraGrid 
tr = con.BeginTransaction(

    For Each dr As DataRow In dsProducts.Tables(0).Rows 
    If dr.RowState = DataRowState.Deleted Then 
    Try 
+0

Вам не нужно делать какие-либо из этого, просто удалить строку ('DataRow. Delete() ') и состояние строки. Если вы используете DataAdapter, *** он будет принимать соответствующие меры для каждой строки на основе rowstate: 'Dim rows = myDA.Update (dsProducts.Tables (0))' – Plutonix

+0

@Plutonix Я не программно устанавливая строку, которую нужно удалить, которая автоматически обрабатывается программой UltraGrid. Используя «DataAdapter», вы имеете в виду собственно запрос update/delete? Вместо «OleDbCommand»? – David

+0

Это [Поиск значений через datagridview] (http://stackoverflow.com/a/33702351/1070452) показывает, как настроить и использовать DataAdapter («OleDBDataAdapter» в вашем случае, я думаю). Они будут «удерживать» команды «Обновить», «Удалить и т. Д.» И выдавать их с помощью метода «Обновление». – Plutonix

ответ

0

Решено.

  • Объявляет DataTable в верхней части класса

  • О методе BeforeRowsUpdate, вставить новую строку в DataTable, которые являются значениями в строке удаления.

  • При необходимости включите окно подтверждения, чтобы убедиться, что они хотят удалить строку. Если они отменили удаление, удалите строку из DataTable.

  • Это DataTable может быть использован для удаления строк в UPDATE запросе, в то время как сетка DataSource может обрабатывать UPSERTS

0

Сетка позвонит пометить строку как удаленная (установка RowState), и если вы используете TableAdapter, то вы можете просто вызвать Update на адаптере таблицы, проходящий через DataTable к TableAdapter и он будет делать обновление в базе данных. Например:

ultraGrid1.UpdateData() 
Me.dbRowsTableAdapter.Update(Me.testDataSet) 

Если необходимо обработать вручную обновления, и вы хотите, чтобы получить удаленные строки, вы могли бы назвать Select на DataTable мимоходом в DataViewRowState .Deleted для третьего параметра.

+0

Привет, у вас есть примеры того, как это будет сделано для любого метода? – David

+0

В этом разделе приведен пример использования Update на TableAdapter: http://www.infragistics.com/community/forums/t/57161.aspx – alhalama

Смежные вопросы