0

それは私を夢中にさせます。私は Silverlight 5 ビジネス アプリケーションで作業しており、WCF Ria サービス (ドメイン データ ソース) を使用しています。シンプルな ChildControl で、定義済み (以下のコードを参照) ドメイン データ ソース "ddsTerminKonfiguration" を読み込みます。query メソッドは、汎用の IQueryable<TerminKonfiguration> リストを返します。このリストに項目がない場合 (...DataView.Count == 0)、「TerminKonfiguration」の新しいオブジェクトを追加します。ddsTerminKonfiguration.DataView.Add(new TerminKonfiguration()); を実行しようとすると 「'Add' は、この ICollectionView ではサポートされていません」というエラーが表示されます (ドイツ語のエラー メッセージしか知らないので、私の翻訳が理解できることを願っています :-D)。このプロジェクト (他の開発者によってコーディングされたもの) の同等のコード スニペットは正常に動作しています...そして、この問題を解決する方法がわかりません。

私の問題に対するアイデアや解決策はありますか?

私のドメイン データ ソース ...

<riaControls:DomainDataSource Name="ddsTerminKonfiguration"
                              Width="0"
                              Height="0"
                              AutoLoad="False"
                              d:DesignData="{d:DesignInstance my1:TerminKonfiguration, CreateList=true}"
                              LoadedData="ddsTerminKonfiguration_LoadedData"
                              SubmittedChanges="ddsTerminKonfiguration_SubmittedChanges"
                              QueryName="GetTerminKonfigurationQuery">
    <riaControls:DomainDataSource.DomainContext>
        <my:RRPDomainContext />
    </riaControls:DomainDataSource.DomainContext>
    <riaControls:DomainDataSource.QueryParameters>
        <riaControls:Parameter ParameterName="param01" />
        <riaControls:Parameter ParameterName="param02" />
        <riaControls:Parameter ParameterName="param03" />
        <riaControls:Parameter ParameterName="param04" />
    </riaControls:DomainDataSource.QueryParameters>
</riaControls:DomainDataSource>

名前空間 "my" は "Project".Web.Services を参照し、"my1" は "Project".Web.Models を参照します。

クエリメソッド...

    public IQueryable<TerminKonfiguration> GetTerminKonfiguration(string param01, string param02, int param03, int param04) {
        return this.ObjectContext.TerminKonfiguration.Where(d => (d.MandantenNr == param01) && (d.WorkflowNr == param02) && (d.WfAufgabeId == param03) && (d.WfAufgabeIdGlobal == param04));
    }

新しいオブジェクトを DataView に追加しようとするスニペット...

if (this.ddsTerminKonfiguration.DataView.Count == 0) {
    TerminKonfiguration tmpConfig = new TerminKonfiguration();
    /*
        define the new object
    */

    this.ddsTerminKonfiguration.DataView.Add(tmpConfig); // problematic line
}

this.ddsTerminKonfiguration.SubmitChanges();
4

1 に答える 1

1

DataView は DataView これが原因です。DataView はデータのビューです。

データソースを使用すると、注文などをフィルタリングして、DataView への影響を確認できます。

 this.ddsTerminKonfiguration.DataView.Add is not a valid operation.

http://msdn.microsoft.com/en-us/library/ee707363(v=vs.91).aspx

基本的な使い方は

<Grid x:Name="LayoutRoot" Background="White">
<riaControls:DomainDataSource x:Name="source" QueryName="GetProductsByColor" AutoLoad="true">
    <riaControls:DomainDataSource.DomainContext>
        <domain:ProductDomainContext />
    </riaControls:DomainDataSource.DomainContext>
    <riaControls:DomainDataSource.QueryParameters>
        <riaData:Parameter ParameterName="color" Value="Black" />
    </riaControls:DomainDataSource.QueryParameters>
</riaControls:DomainDataSource>

 <data:DataGrid ItemsSource="{Binding Data, ElementName=source}" />

  </Grid>

お気づきのように、DataGrid は DataView ではなく Data にバインドされています。

{Binding Data, ElementName=source}"
于 2013-02-28T10:56:18.830 に答える