jqGrid использовать пользовательский интерфейс jQuery для значков сортировки. Вы можете реализовать свою собственную тему intaractive на http://jqueryui.com/themeroller/ и загрузить ее в конце настройки. Если вы хотите изменить значки сортировки на другие значки, уже существующие в теме, вы можете сделать это более легко. Но прежде всего вам нужно понять, как значки будут использоваться в заголовках столбцов.
В момент инициализации будут созданы заголовки для всех столбцов jqGrid. Каждый заголовок содержит пробелы с значками сортировки. Пролетные блоки выглядят следующим образом
<span class="s-ico" style="display: none;">
<span class="ui-grid-ico-sort ui-icon-asc ui-state-disabled ui-icon ui-icon-triangle-1-n ui-sort-ltr" sort="asc" />
<span class="ui-grid-ico-sort ui-icon-desc ui-state-disabled ui-icon ui-icon-triangle-1-s ui-sort-ltr" sort="desc" />
</span>
Из-за имеющим класс «UI-значок» элементы имеют фон, которые приходят от темы JQuery UI, который вы используете. С фона будут использоваться части, соответствующие значкам «ui-icon-triangle-1-n» и «ui-icon-triangle-1-s». Классы ui-icon
, ui-icon-triangle-1-n
и ui-icon-triangle-1-s
определяются следующим образом
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
Если вы хотите заменить там другие иконки (см всех стандартные доступные иконок на бот из http://jqueryui.com/themeroller/), вы можете сделать это, например, непосредственно после создания jqGrid (после jQuery("#list").jqGrid({/*...*/});
). Если вы не нашли в фоновом изображении значки, которые вам нужны, лучше не менять существующие значки. Вы можете добавить некоторые новые части в фоновое изображение, которое вы используете.
В jqGrid нет прямой поддержки значков сортировки в 3 состояниях (восходящий, нисходящий и несортированный). Если вы действительно хотите это реализовать, я рекомендую вам внимательно прочитать функцию sortData
grig.base.js
, которую вы найдете в подкаталоге src
загруженных источников jqGrid. Этот вызов функции jQuery.hide()
или jQuery.show()
функции для span.s-ico
, добавьте или удалите ui-state-disabled
класс на одном из дочерних пролетов и вызовите onSortCol
дескриптор события, если он определен.Таким образом, вы можете реализовать все изменения значков сортировки внутри своего настраиваемого дескриптора события onSortCol
.
ОБНОВЛЕНО:Free jqGrid вилка имеет множество вариантов настройки значков сортировки. Прежде всего, если поддерживает Font Awesome иконки. Нужно просто включить шрифт Awesome CSS и опцию. Например, можно использовать threeStateSort: true
, чтобы разрешить отображение элемента в оригинальном, несортированном порядке на 3-м щелчке по заголовку столбца. Для изменения порядка значков и текста можно использовать sortIconsBeforeText: true
. Размещение значков сортировки перед текстом может оказаться полезным в случае использования длинных текстов в заголовках столбцов. Можно использовать опцию showOneSortIcon: true
, чтобы показывать только одну иконку сортировки (desc or asc) вместо двух значков сортировки (одна над второй или одна рядом со второй).
Можно даже полностью настроить значки сортировки, переписав метод $.jgrid.builderSortIcons
. The demo показывает, как можно использовать простой настраиваемый метод $.jgrid.builderSortIcons
, чтобы установить * различные значки сортировки для столбцов differents. The demo использует три разных значка в зависимости от типа данных в столбце. Столбцы с типом сортировки по умолчанию sorttype: "text"
отображает
и
в столбцы, имеющие числовые типы (sorttype: "integer"
, sorttype: "int"
, sorttype: "float"
, sorttype: "number"
или sorttype: "currency"
) дисплеи
и
и все остальные столбцы, например, столбец, имеющий sorttype: "date"
дисплеи
и
Как показывать обе иконки сортировки в неактивном состоянии для каждого столбца первоначально? Это дает визуальный клей, что столбцы сортируются. – Andrus
@ Andrus: Я отправил ответ на ваш вопрос [здесь] (http://stackoverflow.com/a/8899305/315935). – Oleg