1

アドレスをリストする単純なデータグリッドと、ユーザーが編集/新規追加できる子ウィンドウがあります。データグリッドを含むメインフォームには、「新しいアドレスを挿入」するボタンがあり、子ウィンドウに空の 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)

Address はアドレス オブジェクトです。frmAddress は、子ウィンドウ フォームです。AddressDomainDataSource は、子で使用するのと同じデータグリッドで使用するデータソースです。CanAdd は常に false で、追加する前に読み込みを試みるように言われましたが、これは役に立たなかったようです。Add メソッドに到達すると、'Add' is not supported by this ICollectionView の例外が返されます。どんな助けでも大歓迎です。ありがとう

4

3 に答える 3

1

DataView フィールドは、読み取り専用のコレクションと考える必要があります。DataGrid での DomainDataSource の最も単純な一般的な使用法は、次のようになります。

(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();
于 2012-06-18T15:14:49.500 に答える
0

また、ドメイン サービスに挿入メソッドが必要です。したがって、次のようなメソッドがあることを確認してください。

Public Sub InsertAddress(address As Address)
End Sub

またはC#で

public void InsertAddress(Address address)
于 2012-06-18T15:22:27.093 に答える
0

私は最近同じ問題を抱えていましたが、私の場合、選択されていない TabItem に存在していたため、DomainDataSource はロードされていませんでした (または、まだそのコンテキストにバインドされていませんでした)。

DomainDataSource がビジュアル ツリーに適切に読み込まれていることを確認してください。これにより、私の場合は問題が解決しました。

于 2013-03-31T13:30:23.627 に答える