将列排序索引添加到列标题以进行多列排序

时间:2014-10-02 15:41:13

标签: kendo-ui kendo-grid

无论如何通过标题模板或其他任何东西将索引标记放入列标题中?例如,如果我有一个列有一列的网格,用户点击“名称”列,然后点击“城市”列。

我想在“名称”旁边放一个“1”,在“城市”旁边放一个“2”来表示排序顺序。

2 个答案:

答案 0 :(得分:2)

使用Headertemplates时,存在一个问题,即无法在“呈现列标题之前”捕获事件。我有以下dataBinding事件仍然可以执行您想要的操作:

 dataBinding: function(e){

    var sortArray = $("#grid").data("kendoGrid").dataSource.sort();                
    if(sortArray)
    {
    for(var i = 0;i < sortArray.length; i++)
    {

     $("#grid th[data-field=" + sortArray[i].field + "] .k-link").html("(" + (i+1) + ")" + sortArray[i].field ); 
    }

      var sortedColumns = sortArray.map(function(o){return o.field});

      var columns = $("#grid").data("kendoGrid").columns; 
     for (i in columns)
     {
        if(sortedColumns.indexOf(columns[i].field) == -1)
         $("#grid th[data-field=" + columns[i].field + "] .k-link").html(columns[i].field ); 
     }

    }

  }

以下是Kendo dojo链接:http://dojo.telerik.com/eneH/4

答案 1 :(得分:0)

一种更简单的解决方案,与上述类似

	$('.field_sort_number').remove();
	var sort_v = gridDataSource.sort();
	if (sort_v)
	  for (i = 0; i < sort_v.length; ++i) {
	    $('th[data-field="' + sort_v[i].field + '"] a[class="k-link"]').append('<sub class="field_sort_number">' + (i + 1) + '</sub>');
	  }