Сделать выбранный цвет самым высоким уровнем в jqGrid - PullRequest
0 голосов
/ 10 февраля 2011

Я меняю цвет некоторых ячеек в gridComplete: function(){. Это отменяет зависание или выбранный цвет. Я хочу сделать парение и выбранные цвета наивысшим уровнем. т.е. если я выбрал цветную строку, она изменится на выбранный цвет.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2013

Извините за ответ на этот старый вопрос, но я надеюсь, что кто-то еще может найти его полезным. После долгого поиска решения я придумал следующее:

  1. Добавьте фиктивный класс (без стилей) в столбец с помощью опции colmodel jqGrid 'classes'.
  2. Добавить стиль, устанавливающий фон с помощью селектора, подобного этому:
tr.jqgrow:not(.ui-state-hover):not(.ui-state-highlight) td.mydummycol {
    background-color: #ffd !important; 
}

Таким образом, фон применяется только в том случае, если строка не выделена или находится в состоянии наведения.

0 голосов
/ 10 февраля 2011

Полагаю, ваш вопрос продолжается ваш предыдущий вопрос о цвете некоторых ячеек. Я создал еще одну демонстрацию , код которой длиннее моего предыдущего примера из моего ответа на ваш предыдущий вопрос.

Основная проблема с настройкой цвета ячейки (<td> элемент) состоит в том, что класс ячейки, конечно, имеет более высокий приоритет, чем классы строки, потому что по определению классов строки не было! "атрибут используется. Таким образом, чтобы сделать выбранную ячейку зависания точно такой же, как другие стандартные ячейки, необходимо удалить класс ячейки, который меняет свой цвет. После «отмены выбора» или «отмены отображения» соответствующей строки необходимо восстановить удаленный класс ячейки (классы «ui-state-error ui-state-error-text»). Я реализовал это поведение с помощью следующего кода:

var grid = $("#list");
var saveErrorStateInData = function(ptr) {
    var redCells = $("td.ui-state-error",ptr);
    if (redCells.length > 0) {
        var errorCells=[];
        $.each(redCells,function(index, value) {
            errorCells.push(value);
            $(value).removeClass("ui-state-error ui-state-error-text");
        });
        $(ptr).data('errorCells',errorCells);
    }
};
var restoreErrorStateFromData = function(ptr) {
    var errorCells = $(ptr).data('errorCells');
    if (errorCells && typeof errorCells.length !== "undefined"
                   && errorCells.length>0) {
        $.each(errorCells,function(index, value) {
            $(value).addClass("ui-state-error ui-state-error-text");
        });
    }
};
grid.jqGrid({
    // all jqGrid parameters
    beforeSelectRow: function(rowid, e) {
        var selrowid = $(this).getGridParam('selrow');
        restoreErrorStateFromData($("#"+selrowid)[0]);

        ptr = $(e.target).closest("tr.jqgrow");
        saveErrorStateInData(ptr);
        return true;
    }
}).bind('mouseover',function(e) {
    var ptr = $(e.target).closest("tr.jqgrow");
    if($(ptr).attr("class") !== "subgrid") {
        $(ptr).addClass("ui-state-hover");
        saveErrorStateInData(ptr);
    }
    return false;
}).bind('mouseout',function(e) {
    var ptr = $(e.target).closest("tr.jqgrow");
    var selrowid = grid.getGridParam('selrow');
    $(ptr).removeClass("ui-state-hover");
    if (ptr.length === 1 && ptr[0].id !== selrowid) {
        restoreErrorStateFromData(ptr);
    }
    return false;
});

На демоверсии вы увидите, как все это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...