2012-06-16 4 views
1

Мне нужно показать значки столбцов сортировки в Jqgrid. Я нашел ответы здесь сам. Я попытался с этим, теперь я могу видеть значки сортировки на всех сортируемых заголовках столбцов, но столбец сортировки по умолчанию не показывает выделенный значок.Нужно показать значок столбца сортировки по умолчанию в jqgrid

Это мой сценарий:

var $tempX= $(divId), colModel, sortName; 


    jQuery(divId).jqGrid({ 
     datatype: "local", 
     height: 250, 
     width:1000, 
     colNames:eval(colNamesVal), 
     colModel:eval(colModelVal), 
     rowNum:35, 
     rowList:[35,60,100,1000000000], 
     rownumbers: true, 
     rownumWidth:50, 
     height:"auto", 
     pager: '#pager2', 
     ignoreCase: true, 
     //altRows:true, 
     pagination:true, 
     headertitles:true, 
     sortable:true, 
     sortorder: "asc", 
     viewrecords: true, 
     onSortCol: function (index, idxcol, sortorder) { 
      if (this.p.lastsort >= 0 && this.p.lastsort !== idxcol 
        && this.p.colModel[this.p.lastsort].sortable !== false) { 
       // show the icons of last sorted column 
       $(this.grid.headers[this.p.lastsort].el) 
        .find(">div.ui-jqgrid-sortable>span.s-ico").show(); 
       $(this.grid.headers[this.p.lastsort].el).removeClass('sortedColumnHeader'); 
      } 
      $(this.grid.headers[idxcol].el).addClass('sortedColumnHeader'); 
     }, 
     loadComplete: function(){ 
      $("option[value=1000000000]").text('All'); 
     } 
    }); 

colModel = $tempX.jqGrid('getGridParam', 'colModel'); 
    sortName = $tempX.jqGrid('getGridParam', 'sortname'); 
    $('#gbox_' + $.jgrid.jqID($tempX[0].id) + 
     ' tr.ui-jqgrid-labels th.ui-th-column').each(function (i) { 
     var cmi = colModel[i], colName = cmi.name; 

     if (cmi.sortable !== false) { 
      // show the sorting icons 
      $(this).find('>div.ui-jqgrid-sortable>span.s-ico').show(); 
     } else if (!cmi.sortable && colName !== 'rn' && colName !== 'cb' && colName !== 'subgrid') { 
      // change the mouse cursor on the columns which are non-sortable 
      $(this).find('>div.ui-jqgrid-sortable').css({cursor: 'default'}); 
     } 
     if (cmi.name === sortName) { 
      $(this).addClass('sortedColumnHeader'); 
     } 
    }); 
Может

кто-нибудь помочь в этом? Спасибо!

ответ

0

Возможно использование следующих my old answer. The demo или this one это то, что вы используете.

Вы написали, что хотите видеть выделенный значок в столбце сортировки по умолчанию. Чтобы решить проблему, вы должны иметь опцию sortname в сетке. Также важно определить настройку CSS .sortedColumnHeader > div. Если вы сделаете это как в the demo, тогда все будет работать так, как ожидалось.

+0

Просто мне нужно показать значок для отсортированного по умолчанию столбца. Я попробовал ваш скрипт. Но все равно. Все столбцы имеют значки, но для отсортированных значков столбцов бит яркий цвет, либо стрелка вниз, либо стрелка вверх в зависимости от порядка сортировки !. – user1199537

+0

@ user1199537: Нет отсортированного по умолчанию столбца, потому что вы не определяете опцию 'sortname'. Если вы будете использовать параметр 'data' для создания непустой сетки, данные будут ** не отсортированы **. Чтобы отсортировать данные, которые вы должны использовать, укажите столбец, по которому сортировка должна быть выполнена, включая опцию 'sortname'. Просто внимательно просмотрите код [demo] (http://www.ok-soft-gmbh.com/jqGrid/ShowAlwaysSortableIcons1.htm). – Oleg

+0

Для каждой сетки я передаю имя сортировки ... так: loadGrid (colNames, colModels, jsonObj.result, divId, 'name'); – user1199537

Смежные вопросы