Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 剑道网格自定义分组排序顺序_C#_Asp.net Mvc_Sorting_Kendo Grid_Kendo Asp.net Mvc - Fatal编程技术网

C# 剑道网格自定义分组排序顺序

C# 剑道网格自定义分组排序顺序,c#,asp.net-mvc,sorting,kendo-grid,kendo-asp.net-mvc,C#,Asp.net Mvc,Sorting,Kendo Grid,Kendo Asp.net Mvc,我试图弄清楚如何在分组时对列进行自定义排序。下面是一个屏幕截图,描述了我希望它如何工作: 在屏幕截图中,我通过“状态”列默认分组。该列有四个可能的值:不安全|隔离|放弃|异常。正常的排序是按字母顺序排序的,但我希望只对“状态”列按不安全|隔离|放弃|异常进行分组排序。是否可以按照我描述的顺序对“Status”列进行分组排序 如果不可能,我有什么选择?谢谢 这可以通过返回一个包含数据的计算字段来实现,该数据是表示排序中项目顺序的数值。然后按计算字段分组,但在组标题中显示状态值 我用了一个黑客让它

我试图弄清楚如何在分组时对列进行自定义排序。下面是一个屏幕截图,描述了我希望它如何工作:

在屏幕截图中,我通过“状态”列默认分组。该列有四个可能的值:不安全|隔离|放弃|异常。正常的排序是按字母顺序排序的,但我希望只对“状态”列按不安全|隔离|放弃|异常进行分组排序。是否可以按照我描述的顺序对“Status”列进行分组排序


如果不可能,我有什么选择?谢谢

这可以通过返回一个包含数据的计算字段来实现,该数据是表示排序中项目顺序的数值。然后按计算字段分组,但在组标题中显示状态值

我用了一个黑客让它工作,它基本上是这样的:

在控制器中:

foreach (MyCustomModelitem in MyCustomModel)
{
    item.CustomGroupField= item.Status+ "_@@" + MyGetSortIndexForStatus(item.Status).ToString();
}            
在视图中

.Columns(columns =>
{   
    columns.Bound(t => t.CustomGroupField).Width(185).Title("Status")
      .ClientGroupHeaderTemplate("# var a = value.split('_@@')  # #=a[0]#")   
      .ClientTemplate("${Status}")
      .Filterable(filterable => filterable.UI("customFieldFilter"));      
})
....
.DataSource(dataSource => dataSource
    .Ajax()
    .PageSize(750)  
    .Read(read => read.Action("GetSummaryData", "MyContgroller", @Model))
    .ServerOperation(true)           
    .Group(grp =>
     {
         if(!String.IsNullOrEmpty(@Model.Groups))
             foreach(string g in @Model.Groups.Split(','))           
                 grp.Add(g, typeof(string));
     })
 )
可选自定义下拉列表

function customFieldFilter(element) {
    if (element == null) return;
    element.kendoDropDownList({
        dataTextField: "Status",
        dataValueField: "CustomSortField",                
        dataSource: {
            transport: {                       
                read: "@Url.Action("GetMyStatuses", "MyController")"
            }
        }
    });

我最终实现这一点的方法是为这个属性创建一个枚举,它是按照我想要的自定义顺序排序的。然后,我使用
.ClientTemplate()
.ClientGroupHeaderTemplate()
将这些值转换为正确的字符串。

不直接支持,但这篇文章有一个解决方法:听起来像是一个可行的解决方法。我们可以使用状态列的枚举,并通过ClientTemplate进行转换。这就意味着我们也必须为这个专栏创建一个自定义的过滤函数……我给它添加了一个新的答案,这个答案在这里可能也很相关。听起来我们也提出了一个类似的解决方案。我会检查一下,告诉你进展如何。