Как получить ссылку на новую строку, добавляемую в InfraGistics UltraGrid в выигрышной форме VB.net

У меня есть собственность, объявленная следующим образом:

public property FinalList as new BindingList(of Entity)

Сущность - это конкретная сущность, созданная посредством структуры сущности. У меня также есть UltraGrid, свойство DataSource которого связано с FinalList.

Когда программа загружается, она добавляет набор элементов из EF DbSet в FinalList на основе некоторых правил. Поскольку источник данных UltraGrid связан с FinalList, сетка автоматически обновляется с этими начальными элементами.

UltraGrid настроен на добавление новых строк с помощью функции TemplateAddNewRow. И вот тут возникает моя проблема. Добавление строк в сетку правильно добавляет те же новые строки в FinalList... но поскольку FinalList происходит из подмножества EF DbSet, мне нужно, чтобы эти новые строки также добавлялись в DbSet, чтобы изменения были отправлены в база данных, когда пользователь сохраняет.

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

Private Sub grid_InitializeTemplateAddRow(sender As Object, e As InitializeTemplateAddRowEventArgs) Handles grid.InitializeTemplateAddRow
    If e.TemplateAddRow.ListObject IsNot Nothing then 
        'do something to add the row to EF DbSet
    End If
End Sub

Этот код работал нормально до связывания. Теперь ListObject - это всегда ничто... так что это не работает. Там также есть свойство

e.TemplateAddRow.IsAddNew

Это всегда также ложно... так что я тоже не могу это использовать.

Я подозреваю, что проблема заключается в том, что, поскольку все связано, UltraGrid не может определить, является ли что-то новым или нет... поэтому я думаю, что мне нужно перехватить строку непосредственно перед / после того, как она будет добавлена ​​в FinalList, а не добавлена к сетке. Согласно IntelliSense, в FinalList нет событий, которые я мог бы связать. Какие-нибудь мысли?

0 ответов

Другие вопросы по тегам