Kendo 在 Header 单击之前按降序排列网格
Kendo Grid Sort By Descending Before Ascending on Header Click
当我们点击 header 列时,kendo 网格的默认排序方向是升序。
我想在用户第一次点击 header 时按降序对 kendo 网格进行排序。
示例:
1. Default Behavior
Studnet Marks
abc 15
pqr 25
xyz 7
2. When Clicking on Marks Header first time
Student Marks
pqr 25
abc 15
xyz 7
3. When clicking on Marks header second time.
Students Marks
xyz 7
abc 15
pqr 25
我正在尝试这样的事情:
$("#priority .k-header").eq(1).click(function(ele) {
debugger;
var kendoGrid = $("#priority").data('kendoGrid');
var dsSort = [];
var sort = kendoGrid.dataSource.sort();
if (sort.length > 0) {
if(sort[0].dir==="asc")
kendoGrid.dataSource.sort({field: sort[0].field, dir: "desc"});
if(sort[0].dir==="desc")
kendoGrid.dataSource.sort({field: sort[0].field, dir: "asc"});
}
});
但是不行。
在 kendo 数据源中指定排序如下:
$("#grid").kendoGrid({
dataSource: {
..
, sort: { field: "Marks", dir: "desc" }
..
}
});
已编辑
你可以这样试试
设置全局值并调用更改数据源函数
var firstClick=true;
$('#grid').data().kendoGrid.dataSource.bind('change', function(e) {
if(firstClick){
var kendoGrid = $("#grid").data('kendoGrid');
var dsSort = [];
dsSort.push({ field: "fieldName1", dir: "asc" });
dsSort.push({ field: "fieldName2", dir: "desc" });
...
kendoGrid.dataSource.sort(dsSort);
firstClick=false;
}
});
我也在找这个,遇到了这个问题。
同时我找到了解决方案。
我们创建一个函数来反转字段:
function reverseSortOrderSequence() {
setTimeout(function() {
var colSortHeaders = $("#gridId [data-role='columnsorter']");
$.each(colSortHeaders, function(index, item) {
if ($(item).attr("data-dir") === undefined) {
$(item).attr("data-dir", "asc");
} else if ($(item).attr("data-dir") === "asc") {
$(item).attr('data-dir', 'desc');
} else if ($(item).attr("data-dir") === "desc") {
$(item).attr('data-dir', null);
}
});
});
}
只需将 gridId 替换为您的 kendo 网格 ID。
然后,在 Kendo 网格配置的 dataBound 属性 中调用此函数:
{...
columns: ...,
dataBound: function(event) {
reverseSortOrderSequence();
}
}
当我们点击 header 列时,kendo 网格的默认排序方向是升序。
我想在用户第一次点击 header 时按降序对 kendo 网格进行排序。
示例:
1. Default Behavior
Studnet Marks
abc 15
pqr 25
xyz 7
2. When Clicking on Marks Header first time
Student Marks
pqr 25
abc 15
xyz 7
3. When clicking on Marks header second time.
Students Marks
xyz 7
abc 15
pqr 25
我正在尝试这样的事情:
$("#priority .k-header").eq(1).click(function(ele) {
debugger;
var kendoGrid = $("#priority").data('kendoGrid');
var dsSort = [];
var sort = kendoGrid.dataSource.sort();
if (sort.length > 0) {
if(sort[0].dir==="asc")
kendoGrid.dataSource.sort({field: sort[0].field, dir: "desc"});
if(sort[0].dir==="desc")
kendoGrid.dataSource.sort({field: sort[0].field, dir: "asc"});
}
});
但是不行。
在 kendo 数据源中指定排序如下:
$("#grid").kendoGrid({
dataSource: {
..
, sort: { field: "Marks", dir: "desc" }
..
}
});
已编辑 你可以这样试试
设置全局值并调用更改数据源函数
var firstClick=true;
$('#grid').data().kendoGrid.dataSource.bind('change', function(e) {
if(firstClick){
var kendoGrid = $("#grid").data('kendoGrid');
var dsSort = [];
dsSort.push({ field: "fieldName1", dir: "asc" });
dsSort.push({ field: "fieldName2", dir: "desc" });
...
kendoGrid.dataSource.sort(dsSort);
firstClick=false;
}
});
我也在找这个,遇到了这个问题。 同时我找到了解决方案。 我们创建一个函数来反转字段:
function reverseSortOrderSequence() {
setTimeout(function() {
var colSortHeaders = $("#gridId [data-role='columnsorter']");
$.each(colSortHeaders, function(index, item) {
if ($(item).attr("data-dir") === undefined) {
$(item).attr("data-dir", "asc");
} else if ($(item).attr("data-dir") === "asc") {
$(item).attr('data-dir', 'desc');
} else if ($(item).attr("data-dir") === "desc") {
$(item).attr('data-dir', null);
}
});
});
}
只需将 gridId 替换为您的 kendo 网格 ID。
然后,在 Kendo 网格配置的 dataBound 属性 中调用此函数:
{...
columns: ...,
dataBound: function(event) {
reverseSortOrderSequence();
}
}