Javascript 剑道网格C-再次选择当前页面而不刷新数据源

Javascript 剑道网格C-再次选择当前页面而不刷新数据源,javascript,c#,linq,kendo-ui,grid,Javascript,C#,Linq,Kendo Ui,Grid,我一直在努力解决这个问题,我想做的是: 我有一个从服务器获取数据的数据源,当我进入服务器时,我得到项目列表,然后我必须搜索项目,我必须选择该项目可以在任何页面中,在我有项目和项目所在的页面后,假设每个页面有30个项目,然后我调用LINQ表达式跳过所需的数据量并取30。最后,我将这个列表返回给客户端 当数据到达客户端时,我需要自动选择所选项目并更改页面,以便在所选项目所在的右侧页面中找到用户。我有新的页面,跳过,选择值和客户端的一切再次 您建议我如何将页面更改为kendo网格数据源,而不调用新的刷

我一直在努力解决这个问题,我想做的是:

我有一个从服务器获取数据的数据源,当我进入服务器时,我得到项目列表,然后我必须搜索项目,我必须选择该项目可以在任何页面中,在我有项目和项目所在的页面后,假设每个页面有30个项目,然后我调用LINQ表达式跳过所需的数据量并取30。最后,我将这个列表返回给客户端

当数据到达客户端时,我需要自动选择所选项目并更改页面,以便在所选项目所在的右侧页面中找到用户。我有新的页面,跳过,选择值和客户端的一切再次

您建议我如何将页面更改为kendo网格数据源,而不调用新的刷新并再次转到服务器

这就是数据源的外观:

return new kendo.data.DataSource({
        serverPaging: true,
        transport: {
            read: {
                url: URLController.Current().getURL('MyURL'),
                contentType: 'application/json',
                accepts: 'application/json',
                type: 'POST'
            },
            parameterMap: function(data, type) {
                if (data) {
                    return JSON.stringify(
                    {
                        data: jsonData,
                        pageSize: data.pageSize,
                        skip: data.skip,
                        take: data.take
                    });
                }
            }
        },
        schema: {
            data: function (data) {
                var dropDownData = JSON.parse(data);
                gridElement.attr('data-model', JSON.stringify({ data: data }));

                return dropDownData.Data;
            },
            total: function (data) {
                var dropDownData = JSON.parse(data);
                return dropDownData.total;
            },
            model: {
                id: 'ID'
            }
        },
        pageable: true,
        pageSize: 30,
        error: function(e) {
            alert('Error ' + e);
        }
    });
当网格数据有界时,我必须将页面更改为当前页码,然后选择当前项

grid.one('dataBound', function (e) {
            var currentGridElement = this.element;
            var currentModel = currentGridElement.attr('data-model');
            var currentJsonData = parseDropDownDataJSONString(currentModel).data;
            var gridDataSource = this.dataSource;
            var selection = gridDataSource.get(currentJsonData.selectedValue);
            if (selection != undefined) {
                var row = currentGridElement.find('tbody>tr[data-uid=' + selection.uid + ']');
                if (row != undefined) {
                    currentGridElement.attr('data-closeByChange', false);
                    gridDataSource.page(currentJsonData.pageNumber);
                    this.select(row);
                    dexonDropDownGrid.combobox().text(selection.DISPLAY);
                }
            }
            var aaaa = 0;
        });
这就是我的数据绑定事件监听器的样子,当我尝试设置页面时,它再次调用服务器,我得到了更多的延迟来加载正确的数据

有什么办法解决这个问题吗

谢谢,我也有同样的问题

我如何解决这一问题并不是最好的解决方案,但它确实有效:

var forcedPageChange = false;
var cachedResult;

var dataSource = new kendo.data.DataSource({
    transport: {
        read: function (options) {
            if (forcedPageChange) { // prevent data request after manual page change
                forcedPageChange = false;
                options.success(cachedResult);
                cachedResult = null;
                return;
            }

            gridDataProvider.getData() // promise of data
                    .then(function (result) {
                        // check if current page number was changed
                        if ($scope.gridConfig.dataSource.page() !== result.pageNumber ||
                                $scope.gridConfig.dataSource.pageSize() !== result.rowsPerPage) {
                            cachedResult = _.clone(result);
                            forcedPageChange = true;
                            options.page = result.pageNumber;
                            options.pageSize = result.rowsPerPage;
                            $scope.gridConfig.dataSource.query(options);
                        }

                        options.success(result);
                    }, function () {
                        options.error();
                    });
        }
    },
    schema: {
        data: function (response) {
            return response.items;
        },
        total: function (response) {
            return response.totalCount;
        }
    },
    //...
    serverPaging: true,
    serverSorting: true,
    serverFiltering: true
});
我发现dataSource.pagenewPageNumber在这种情况下不起作用。它只是把页码降到1

这个解决方案是可行的,但我仍然有一个错误,数据源后缺少排序图标。查询选项