有没有办法控制Kendo UI网格中的分组顺序。有一个小组我想在所有其他小组之前去,但看起来Kendo UI网格按字母顺序排列小组。我知道为分组名称添加一个空间是有效的,但这看起来很骇人。在Kendo UI网格中控制组订单
感谢 利奥
有没有办法控制Kendo UI网格中的分组顺序。有一个小组我想在所有其他小组之前去,但看起来Kendo UI网格按字母顺序排列小组。我知道为分组名称添加一个空间是有效的,但这看起来很骇人。在Kendo UI网格中控制组订单
感谢 利奥
目前没有办法对除该组字段以外的其他组进行排序。有一种方法可以像Telerik那样在非Kendo网格中进行排序,这是我现在对它们最大的特性要求。所以我们现在被卡住了。
对我而言,一件破解工作就是将排序字段和显示字段组合成一个新的字符串列,该列将隐藏范围内的排序字段部分隐藏起来。这是在数据源端完成的(对于我来说,在SQL中)。即使排序字段是数字,新列也会被排序为字符串,因此在某些情况下您必须适当地进行填充。
例如,如果我的数据是:
[
{
'Name': 'Alice',
'Rank': 10,
'RankName': '<span class="myHiddenClass">10</span>Alice',
... (other fields)
},
{
'Name': 'Bob',
'Rank': 9,
'RankName': '<span class="myHiddenClass">09</span>Bob',
... (other fields)
},
{
'Name': 'Eve',
'Rank': 11,
'RankName': '<span class="myHiddenClass">11</span>Eve',
... (other fields)
}
... (Multiple Alice/Bob/Eve records)
]
那么我可以通过RankName场,而不是名称字段组。它将在组标题中显示名称字段,但按Rank字段排序。在这种情况下,即使爱丽丝首次按字母顺序排列,鲍勃也会成为第一组。这与您提到的空白填充类似。
使用列来指定列的顺序,一旦你有你的数据,如
columns: [
{
field: "LastName",
title: "Last Name"
},
{
field: "FirstName",
title: "First Name"
}
]
分组时,自定义排序方向不由电网支持的 - 组是按照列的排序方式排序(当使用客户端排序时),当没有分组时。排序方向与JavaScript中的默认排序相同。
您可以添加查询您所定义的数据源后,这似乎工作
related.query({
sort: { field: "Sort", dir: "asc"},
group: { field: "CategoryName" },
pageSize: 50
});
在相互关联的数据源的
剑道的分组由给定的排序阵列中的所有元素的名称字段(例如fooBar
),然后迭代排序的元素。概括地说,与伪代码:
if (element[i].fooBar!= element[i-1].fooBar) {
StartNewGroup(element[i]);
} else {
AddToLastGroup(element[i]);
}
由于排序后的数组,需要做的分组,它是棘手的更改排序。我创建的代码来取代内部groupBy()
功能,这让我的分组结果,但是我喜欢排序:你的页面加载后
function overrideKendoGroupBy() {
var origFunc = kendo.data.Query.prototype.groupBy;
kendo.data.Query.prototype.groupBy = function (descriptor) {
var q = origFunc.call(this, descriptor);
var data = SortYourData(q.data, descriptor.dir);
return new kendo.data.Query(data);
};
}
呼叫overrideKendoGroupBy()
在一些点。现在只需实现SortYourData()
函数,其中q.data
是一组分组,descriptor.dir
是"asc"
或"desc"
。 q.data[n]
有一个items
数组,其中包含第n
组中包含的来自原始数据源的元素。
注意:此解决方案仅适用于不使用分页。在应用分组前,页面会被分解,所以如果您的数据跨越多个页面,所有投注都将关闭。
尝试AddDescending和AddAscending,见下文
@(Html.Kendo().Chart<T>()
[... other code ...]
.DataSource(ds => ds
.Read(read => read.Action("action", "controller"))
.Group(g => g.AddDescending(model=> model.property)) // <-- subtle difference here!
)
[... other code ...]
)
例子下面是一个简单的解决方法。 之前不漂亮,但很简单...
在文本前只需添加空格来达到期望的上述排序
[{
'Value': 1,
'Description': 'Description 1',
'Grouping': 'Group 1'
},
{
'Value': 2,
'Description': 'Description 2',
'Grouping': ' Group 2'
},
{
'Value': 3,
'Description': 'Description 3',
'Grouping': 'Group 3'
}]
在示例代码组2出现1组因为领先的空间。
感谢您提供关于在名称前面添加空格的提示(从后端) - 当空间在UI中呈现时实际上会被删除 – 2016-09-19 20:56:18