Подтвердить что ты не робот

Изменение стиля курсора в зависимости от сортировки или нет.

Я использую jqGrid и имею 3 столбца, которые НЕ могут быть отсортированы. В этот момент курсор меняется на руку, когда пользователь наводится на заголовки, независимо от того, какая сортировка установлена ​​в true или false. Я бы хотел, чтобы этот указатель был чем-то другим, кроме руки (текст или указатель) на этих головах столбцов. Это смущает пользователей таким образом. Это что-то, что можно установить?

Спасибо, Марк

4b9b3361

Ответ 1

Я нахожу этот вопрос очень хорошим. Так что +1 от меня.

Вы не первый человек (а не последний), который хочет иметь другой указатель на не сортируемые столбцы. Жаль, но jqGrid не дает вам классов или других простых атрибутов, которые можно использовать для поиска элементов, в которых можно установить CSS "cursor: default".

Поэтому я предлагаю сделать это со следующим кодом:

var myGrid = $("#list");

// create the grid
myGrid.jqGrid({
  // all jqGrid parameters
});

// fix cursor on non-sortable columns
var cm = myGrid[0].p.colModel;
$.each(myGrid[0].grid.headers, function(index, value) {
    var cmi = cm[index], colName = cmi.name;
    if(!cmi.sortable && colName!=='rn' && colName!=='cb' && colName!=='subgrid') {
        $('div.ui-jqgrid-sortable',value.el).css({cursor:"default"});
    }
});

Вы можете видеть на демо в реальном времени, что метод работает. В демо последний столбец "Заметки" не сортируется.

Было бы неплохо, если бы такое поведение было бы стандартным в следующей версии jqGrid. Я попытаюсь найти время и написать предложение о том, что из кода jqGrid следует изменить, чтобы сделать поведение из коробки.

ОБНОВЛЕНО. Проблема с указателем на не сортируемые столбцы больше не существует в free jqGrid 4.8.

Ответ 2

Добро пожаловать в SO.

Совершенно верно. CSS:

th.unsortableclass {
cursor: default;
}

Теперь примените этот класс к заголовкам столбцов, которые не сортируются.

Ответ 3

Пример Oleg работал отлично, но у меня был запрос всегда показывать стрелки, если столбец был сортируемым. Я знаю, что комментирую, но думал, что у кого-то может быть такое же требование.

Итак, я добавил это в свой цикл:

jQuery('span.s-ico',value.el).remove();

Затем после запуска кода:

jQuery(".s-ico").show();

И затем добавил это к моей сетке create:

onSortCol:function(index, iCol, sortorder){
    // redisplay all arrows
    jQuery(".s-ico").show();
}

Ответ 4

$("jquery selector to pick only non-sorted columns").css("cursor", "default");