2012-01-16 4 views
3

столбец jqGrid показывает значки сортировки только в том случае, если столбец отсортирован.как сделать значки сортировки видимыми во всех заголовках столбцов в jqgrid независимо от статуса сортировки

Как сделать иконки сортировки видимыми во всех столбцах, чтобы пользователь имел идею , что сортировка может быть выполнена щелчком в заголовке столбца? Вероятно, оба треугольника направления сортировки должны быть неактивными.

Telerik radgrid имеет это:

http://www.telerik.com/community/forums/aspnet/grid/possible-to-show-sort-icon-regardless-sort-status.aspx

Как реализовать это в jqGrid? В настоящее время нет никаких признаков того, что столбцы сортируются.

Update

Я попытался решение от ответа, используя colmodel ниже.

Вопросы:

  1. Для узка и столбцы сортировки значков не отображаются или отображаются частично. В правой части заголовка столбцов имеется пустое пространство. Как уменьшить это пустое пространство, чтобы текст заголовка столбца и значок сортировки отображались в этой области?

  2. После сортировки сортировать значки во всех столбцах, кроме отсортированных, теряются. Как их сохранить?

ответ

9

viewsortcols: [true, 'vertical', true]

+1

Неужели это должен быть ответ ?! – Whelkaholism

+1

@Whelkaholism: да, отлично работает! Посмотрите здесь описание параметра: http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options –

5

Я считаю, что идея хорошая, поэтому я создал the demo, который реализует поведение:

enter image description here

Реализация этого с кодом:

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

// create the grid 
$grid.jqGrid({ 
    // all typical jqGrid parameters 
    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(); 
     } 
    } 
}); 

// show sort icons of all sortable columns 
colModel = $grid.jqGrid('getGridParam', 'colModel'); 
$('#gbox_' + $.jgrid.jqID($grid[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'}); 
    } 
}); 

ОБНОВЛЕНО: Если вам нужно отобразить информацию в столбцах, в основном компактных, вы можете сделать некоторые настройки в CSS заголовка столбца. Например, по умолчанию у вас есть выравнивание по центру во всех заголовках столбцов. В отношении следующего CSS

.ui-jqgrid .ui-jqgrid-htable th.ui-th-column 
{ 
    text-align:left 
} 
.ui-jqgrid .ui-jqgrid-htable th.ui-th-column div.ui-jqgrid-sortable 
{ 
    margin-left:3px;margin-top:3px 
} 

Вы можете изменить его на выравнивание по левому краю. Как видно из результатов вы будете иметь более компактный вид заголовков столбцов:

enter image description here

увидеть соответствующую demo. Кстати, я рекомендую вам проверить, достаточно ли ширины столбца, чтобы показать значки сортировки в браузерах Webkit (Google Chrome или Safari).

+0

Thank yuo очень много. Отлично. Я столкнулся с некоторыми проблемами и обновленными вопросами о них. – Andrus

+0

@ Andrus: Добро пожаловать! Вы можете воспроизвести описанную проблему в моей демонстрации? Вы написали: «После сортировки, сортировки значков во всех столбцах, кроме отсортированных, теряются». Вы использовали 'onSortCol' с кодом, который я предложил?Проблема с неполными значками может существовать, если ширина столбцов не достаточно широкая. В случае, если у вас должна быть одна и та же проблема, независимая от моего решения. Если вы просто используете оригинальный jqGrid, вы должны иметь одинаковую видимость. – Oleg

+0

Я не могу воспроизвести проблему в вашей демонстрации. Действия по воспроизведению: a) В IE9 нажмите F5, дождитесь завершения загрузки страницы. b) щелкните по столбцу Лиик. Все остальные значки col теряются. Я отправил вам тестовый URL. Я использовал именно ваш код onSortCol. – Andrus

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