【发布时间】:2015-01-30 12:19:43
【问题描述】:
我一直在努力解决这个问题,我想做的是:
我有一个从服务器获取数据的数据源,当我转到服务器时,我得到项目列表,然后我必须搜索我必须选择的项目(该项目可以在任何页面中),之后我项目和项目所在的页面(假设每个页面有 30 个项目),然后我调用 LINQ 表达式以跳过所需的数据量并取 30。最后我将此列表返回给客户端。
当数据到达客户端时,我需要“自动选择”所选项目并更改页面以在所选项目所在的正确页面中找到用户。我又在客户端拥有了新页面、跳过、选择的值和所有内容。
你有什么建议让我将页面更改为剑道网格数据源而不调用新的刷新并再次转到服务器?
这是数据源的样子:
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;
});
这就是我的数据绑定事件侦听器的样子,当我尝试设置页面时,它再次调用服务器,并且加载正确数据的延迟时间更长。
有没有办法解决这个问题?
谢谢
【问题讨论】:
标签: javascript c# linq kendo-ui grid