控制集团为了在剑道UI网格(Controlling Group order in a Kendo U

2019-09-01 21:57发布

有没有办法控制在剑道UI格分组的顺序。 有一组我想所有其他组之前去的,但似乎剑道UI电网字母顺序排列的组。 我知道,增加了分组名称空间的工作但是这似乎很hackish的。

由于狮子座

Answer 1:

目前还没有办法进行排序比该组的其他领域的一些分组。 有一个办法像Telerik的做在他们的非剑道网格来组进行排序对他们来说是我最大的功能要求,现在。 因此,我们正在使用黑客现在卡住。

一分劈为我的作品是排序字段和显示字段合并成一个新的字符串列隐藏了一个隐藏的范围内排序字段部分。 这是在数据源端完成(对我来说,在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场,而不是名称字段组。 它将显示名称字段中的组头,而是由等级字段进行排序。 在这种情况下,鲍勃将显示为即使爱丽丝首字母顺序排列的第一组。 这工作你提到的空间填充类似。



Answer 2:

剑道的分组排序由给定场(例如,阵列中的所有元件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个分组。

注意:此解决方案只,如果你不使用分页工作。 分组加上之前的页面被分解,因此,所有的赌注都关闭,如果您的数据跨越多个页面。



Answer 3:

尝试AddDescendingAddAscending,见下面的例子

@(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 ...]
)

http://www.telerik.com/forums/stacked-chart-legend-order



Answer 4:

自定义排序分组被网格支持时方向- (使用客户排序时)时,有不进行分组的组被排序以同样的方式作为该列被排序。 排序方向是相同的JavaScript默认排序。



Answer 5:

您可以添加查询您所定义的数据源后,这似乎工作

 related.query({
        sort: { field: "Sort", dir: "asc"},
        group: { field: "CategoryName" },
        pageSize: 50
    });

在相互关联的是数据源的名称



Answer 6:

下面是一个简单的解决方法。 不漂亮,但很简单...

只需在文本的前面加上空格来达到期望的排序

   [{ 
      '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组前因为领先空间。



Answer 7:

使用列,一旦你有你的数据,如指定列的顺序

columns: [
{
field: "LastName",
title: "Last Name" 
},
{
field: "FirstName",
title: "First Name"
}
]


文章来源: Controlling Group order in a Kendo UI Grid