我正在使用剑道网格并希望在服务器中执行过滤、排序和分页。我知道我应该添加到数据源:
serverPaging: true,
serverSorting: true
但是我如何告诉网格/数据源它应该使用哪个 url 进行排序、过滤等。
如果我想自己执行排序怎么办?我想使用剑道提供的控制,但我自己去服务器。是否有像“sortTriggered”这样的事件,我可以调用“prevntDefault”或类似的东西......我不知道。
最佳答案
看看这个样本。它使用 Windows Azure 的 MobileServices javascript api,但向您展示了如何自己处理服务器分页和排序。
http://jsbin.com/efeKiwO/11/edit
在数据源的传输函数上,每个方法(读取、更新、创建、销毁)都可以配置为一个函数(这是读取函数,它处理任何排序和分页)。
read: function(options) {
// Get the table
var table = client.getTable("Customer");
// Build base query
var query = table.includeTotalCount();
// Add paging
if(options.data.skip !== undefined && options.data.take !== undefined) {
query = query.skip(options.data.skip).take(options.data.take);
}
// Add sorting
if(typeof options.data.sort !== "undefined" && options.data.sort !== null) {
for(var i = 0; i< options.data.sort.length; i++) {
if(options.data.sort[i].dir === "desc") {
query = query.orderByDescending(options.data.sort[i].field);
}
else {
query = query.orderBy(options.data.sort[i].field);
}
}
}
var promise = query.read();
promise.done(function(data) {
options.success(data);
});
},
在该功能中,您可以做任何您喜欢的事情。您可以进行 $.getJSON 调用、$.ajax 调用或其他任何您想做的事情,而不是使用像这个示例这样的 javascript 库。该函数的参数对象将包含分页、排序和过滤所需的一切。获得数据后,只需调用 options.success(dataSet);使用您正确排序/分页的数据集,您的网格将绑定(bind)到它。
关于kendo-ui - kendo ui网格过滤器,服务器中的排序和分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21603848/