Silverlight 4 Добавить новый элемент в DomainDataSource - PullRequest
1 голос
/ 01 июля 2011

У меня есть простая таблица данных адресов и дочернее окно, где пользователь может редактировать / добавлять новые. На главной форме с сеткой данных у меня есть кнопка «Вставить новый адрес», которая должна загрузить дочернее окно с пустым объектом Address. Однако это не позволит мне добавить запись. Я делаю что-то неправильно? мой текущий код выглядит следующим образом:

    Dim address As New Address
    Dim frmAddressObj As New frmAddress

    If frmAddressObj.AddressDomainDataSource.DataView.CanAdd = False Then
        frmAddressObj.AddressDomainDataSource.Load()
    End If
    frmAddressObj.AddressDomainDataSource.DataView.Add(address)

Адрес - это адрес объекта. frmAddress - это дочерняя форма окна. AddressDomainDataSource - это тот же источник данных, который я использую в сетке данных, который я использую в дочернем элементе. CanAdd всегда ложно, и мне сказали попробовать загрузить перед добавлением, но это, похоже, не помогло. Когда он достигает метода Add, он возвращает исключение 'Add', которое не поддерживается этим ICollectionView. Любая помощь будет оценена. Спасибо

Ответы [ 3 ]

1 голос
/ 18 июня 2012

Поле DataView следует рассматривать как коллекцию только для чтения. Самое простое общее использование DomainDataSource с DataGrid выглядит примерно так:

(myDataSource.DomainContext as myDomainContext).my_entitys.Remove(dgOrders.SelectedItem as order);
(myDataSource.DomainContext as myDomainContext).SubmitChanges();

Это похоже на вставку, вы просто используете

my_entitys.Add(myNewEntityInstance); 

вместо

my_entitys.Remove(entityToRemove);

А для обновлений просто звоните

(myDataSource.DomainContext as myDomainContext).SubmitChanges();
0 голосов
/ 31 марта 2013

У меня недавно была такая же проблема, и в моем случае DomainDataSource не был загружен (или даже привязан к его контексту), потому что он находился в TabItem, который не был выбран.

Убедитесь, что выправильно загрузите ваш DomainDataSource в визуальное дерево, что решило проблему в моем случае.

0 голосов
/ 18 июня 2012

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

Public Sub InsertAddress(address As Address)
End Sub

или в C #

public void InsertAddress(Address address)
...