2012-02-04 47 views
2

jqGrid的列標題上的排序圖標顯示向上和向下箭頭。有沒有辦法強制圖標只顯示一個方向,只允許升序排列?jqGrid只允許1個排序方向

謝謝。

回答

1

查看jqGrid事件文檔here。您可以通過在onSortCol事件中返回'stop'來定義您自己的排序。像這樣的東西應該工作:

onSortCol: function (index, iCol, sortorder) { 
    if (sortorder === "desc") { 
      return 'stop'; 
    } else { 
      //do regular sorting. 
    } 
} 

此外,如果你這樣做對gridComplete應該隱藏下降箭頭:

gridComplete: function() { 
    $('.ui-grid-ico-sort.ui-icon-desc.ui-sort-ltr').hide(); 
} 
2

the answer我展示瞭如何改變排序圖標的可視性。我爲您修改了以前的解決方案,只顯示活動的排序圖標。

The demo演示的結果,並示出了首部是這樣的:

enter image description here

或該:

enter image description here

下面的代碼顯示的代碼的最重要的部分:

var $grid = $("#list"); 

$grid.jqGrid({ 
    //... other jqGrid options 
    sortname: 'invdate', 
    sortorder: 'desc', 
    onSortCol: function (index, idxcol, sortorder) { 
     var $icons = $(this.grid.headers[idxcol].el).find(">div.ui-jqgrid-sortable>span.s-ico"); 
     if (this.p.sortorder === 'asc') { 
      //$icons.find('>span.ui-icon-asc').show(); 
      $icons.find('>span.ui-icon-asc')[0].style.display = ""; 
      $icons.find('>span.ui-icon-desc').hide(); 
     } else { 
      //$icons.find('>span.ui-icon-desc').show(); 
      $icons.find('>span.ui-icon-desc')[0].style.display = ""; 
      $icons.find('>span.ui-icon-asc').hide(); 
     } 
    } 
}); 
// hide initially the disaabled sorting icon 
$('#jqgh_' + $.jgrid.jqID($grid[0].id) + '_' + $.jgrid.jqID(sortName) + '>span.s-ico').each(function() { 
    $(this).find('>span.ui-icon-' + 
     (sortDirection ? 'asc' : 'desc')).hide(); 
}); 

我試圖在onSortCol開始時使用$icons.find('>span.ui-icon-asc').show();,但在Google Chrome中存在問題,因爲show()在<span>元素上設置了display: block樣式。所以我只是刪除了display: none風格。

相關問題