使用绑定到依赖属性的 RIA 查询参数时,域数据源 CanLoad 为 false

发布于 2024-10-25 00:34:08 字数 1381 浏览 0 评论 0原文

我有一个 ria DDS 查询,其参数绑定到我的 silverlight 页面后面的代码的依赖属性。问题是,一旦项目依赖项发生更改,我就会收到以下错误。

当 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);
        }
    }

I have a ria DDS query whose parameter is bound to a dependency property of the code behind my silverlight page. The issue is that once the project dependency is changed I get the following error.

QueryParameters cannot be changed when CanLoad is false. Changing the QueryParameters initiates a load operation, and load operations are not permitted when CanLoad is false. Controls that invoke load operations should be disabled when CanLoad is false.

I'm at a loss on how to complete or cancel the load so I can change the details view for a project every time a new project is selected from a list.

<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);
        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无法回应 2024-11-01 00:34:08

经过更多研究后,我现在非常确定您的上下文中一定有待处理的更改。在这种情况下,DomainDataSources 将“阻塞”,并且您不得对它们造成负载。

如果此错误发生在不同的情况下,我非常有兴趣对此进行纠正。

如果您有待处理的更改,您的解决方案是

  1. 阻止用户输入(可能是负载的最终原因),例如通过禁用表单或
  2. 使用不同的上下文进行提交和 DomainDataSource(然后您将需要使用 RiaServicesContrib在上下文之间复制实体)。

After a bit more research I'm now pretty sure you must have pending changes in you context. In that case, DomainDataSources "block" and you must not cause a load for them.

If this error occurs in a different scenario, I'd be very interested to be corrected on this.

If you have pending changes, your solution is either

  1. to block user input (presumably the ultimate cause of your load), for example by disabling the form or
  2. to use a different context for the submission and the DomainDataSource (you will then want to use RiaServicesContrib to do copying of entities between contexts).
忆悲凉 2024-11-01 00:34:08

在更改参数之前添加提交是否有效?
像这样

set
{ 
    if (xyzDomainDataSource.HasChanges)
        xyzDomainDataSource.SubmitChanges();
    SetValue(projectIDDP, value);        
}

Does this work adding a submit before changing the parameter?
like this

set
{ 
    if (xyzDomainDataSource.HasChanges)
        xyzDomainDataSource.SubmitChanges();
    SetValue(projectIDDP, value);        
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文