1

Silverlight ページの背後にあるコードの依存関係プロパティにパラメーターがバインドされている ria DDS クエリがあります。問題は、プロジェクトの依存関係が変更されると、次のエラーが発生することです。

CanLoad が false の場合、QueryParameters は変更できません。QueryParameters を変更するとロード操作が開始されます。CanLoad が false の場合、ロード操作は許可されません。CanLoad が false の場合、読み込み操作を呼び出すコントロールを無効にする必要があります。

新しいプロジェクトがリストから選択されるたびにプロジェクトの詳細ビューを変更できるように、ロードを完了する方法またはキャンセルする方法がわかりません。

<riaControls:DomainDataSource AutoLoad="True" d:DesignData="{d:DesignInstance my1:XT_PROJECTS, CreateList=true}" Height="0" LoadedData="ProjectDetailsDomainDataSource_LoadedData" Name="ProjectDetailsDomainDataSource" QueryName="getProjectDetails"  Width="0" >
        <riaControls:DomainDataSource.DomainContext>
            <my:MYservices />
        </riaControls:DomainDataSource.DomainContext>
        <riaControls:DomainDataSource.QueryParameters>
            <riaControls:Parameter ParameterName="project" Value="{Binding ElementName=ProjectDetailsPage, Path=project}" />
        </riaControls:DomainDataSource.QueryParameters>
    </riaControls:DomainDataSource>

public static readonly DependencyProperty projectIDDP =
    DependencyProperty.Register("project", typeof(string),typeof(ProjectDetails),
    new PropertyMetadata(""));
 public string projectID
    {
        get
        {
            return (string)GetValue(projectIDDP);
        }
        set
        {
            SetValue(projectIDDP, value);
        }
    }
4

2 に答える 2

1

もう少し調査した結果、コンテキストに保留中の変更が必要であることがわかりました。その場合、DomainDataSources は「ブロック」され、負荷を発生させてはなりません。

このエラーが別のシナリオで発生した場合は、これを修正することに非常に興味があります.

保留中の変更がある場合、解決策は次のいずれかです

  1. ユーザー入力をブロックする (おそらく負荷の最終的な原因)。たとえば、フォームを無効にするか、
  2. 送信と DomainDataSource に別のコンテキストを使用するには (RiaServicesContrib を使用して、コンテキスト間でエンティティをコピーする必要があります)。
于 2013-02-05T14:47:17.040 に答える
0

パラメータを変更する前に送信を追加すると機能しますか? このような

set
{ 
    if (xyzDomainDataSource.HasChanges)
        xyzDomainDataSource.SubmitChanges();
    SetValue(projectIDDP, value);        
}
于 2011-04-19T16:31:47.697 に答える