不应在此策略中执行具有有效分页cookie的CRM 2011查询

时间:2013-02-06 04:22:07

标签: javascript dynamics-crm-2011 webresource

我收到此错误。

  

错误:500:内部服务器错误:具有有效分页cookie的查询   不应该在这个策略中执行

当我在CRM 2011中的WebResource中调用此代码时

    self.loadWorkItems = function () {

        var user = self.user();
        var bid = user.BusinessUnitId.Id();
        var systemUserId = user.SystemUserId();
        var results = new Array();


        SDK.REST.retrieveMultipleRecords(
            "QueueItem",
            "$select=*&$skip=" + self.page() * self.pageSize() + "&$top=" + self.pageSize() + "&$orderby=CreatedOn asc&$filter=OwningBusinessUnit/Id eq guid'" + bid + "' and StateCode/Value eq 0",
            function (r) {
                results = results.concat(r);
            },
            function (error) {
                self.lastError(error.message);
            },
            function (x) {
                for (var i = 0; i < results.length; i++) {
                    var item = results[i];
                    var r = ko.mapping.fromJS(item, workItemMapping);
                    self.workQueue.push(r);
                }
            }
        );
    };

这是knockoutjs视图模型的一部分。我正在尝试创建一个“更多”按钮,从服务器获取下一页数据并将其抛出到显示列表的末尾。

页面加载得很好,第一页回来但是当请求下一页时我得到了这个错误。

有关如何在没有错误的情况下拨打电话的任何想法?

修改

我错了似乎有些人使用$ skip&gt; 0工作。在这里疯了。

修改

我认为这个错误试图告诉我的是,跳过/顶部组合超过了总记录数而不是没有给我任何东西(正如我所料),它正在抛出异常。

所以新问题是如何避免这种愚蠢行为?我想现在我必须计算所有记录,并确保我没有太多页面。

2 个答案:

答案 0 :(得分:1)

我们故意在执行查询时捕获所有错误,因为SDK在跳过中有一个错误并采取linq查询,这导致跳过更多然后结果有项目的问题。据我所知,这还没有得到微软的解决

答案 1 :(得分:0)

您获取不存在的“页面”。基本上你正在跳过比结果更多的元素。

因此,假设基础结果总共有10条与您的过滤器匹配的记录,并且您说

query.skip(12)然后你得到这种情况。