【发布时间】:2012-12-01 12:51:14
【问题描述】:
是否可以在读取数据之前以编程方式设置 KendoUI 数据源的排序参数并避免第二个服务器读取? 范围是在特定用户交互上设置默认排序。怎么样?
这是我正在尝试做的一个示例,因为答案没有切中要害(或者我可能不了解事情是如何运作的)。
我用初始排序定义了一个 Kendo DataSource:
var datasource = new kendo.data.DataSource({
parameterMap: function (inputParams, operation) {
return JSON.stringify(inputParams)
},
// default sort
sort: [
{field: "field_1", dir: "asc"},
{field: "field_2", dir: "asc"}
]
});
此数据源绑定到 Kendo 网格:
var grid = $("element").kendoGrid({
dataSource: datasource
});
然后我有一个按钮,它在 DataSource 上调用“读取”并使用第一页数据填充网格:
$("#btn").bind("click", function(e) {
datasource.page(1);
});
这样,在点击按钮后,用户会得到按“field_1”和“field_2”排序的数据,并且表格会在列标题上显示这种排序。然后,用户可以通过单击列标题以任何方式对数据进行重新排序。
我想做的是将默认排序重置为初始排序,如 DataSource 声明中定义的那样,在列标题上再次显示它,而无需再次创建新的 DataSource。
类似:
$("#btn").bind("click", function(e) {
datasource.sort = [
{field: "field_1", dir: "asc"},
{field: "field_2", dir: "asc"}
];
datasource.page(1);
});
所提供的解决方案似乎没有达到目的(我仍然不明白为什么我会因为一个看似不那么微不足道且应该由框架解决的合法问题而失去声誉积分)。
请告诉我我错了(我不担心失去声誉 - 我只想了解如何解决问题)。
【问题讨论】:
-
我想这是不可能的。
-
它似乎在 JS 中通过 $grid.dataSource.sort( { field: "A", dir: "desc" }, { field: "B", dir: "asc" } ,{字段:“C”,目录:“asc”},{字段:“D”,目录:“desc”});我看到的唯一问题是排序指示器并未显示在所有列上,
标签: sorting datasource kendo-ui