отфильтруйте и примените цвет фона к tr в jqGrid - PullRequest
0 голосов
/ 13 июля 2011

У меня есть этот код, который дает мне приведенный ниже вывод в firebug, поэтому в соответствии с этим выводом я могу отфильтровать td и назначить другой цвет фона, верно?

screenshot

Мой код

loadComplete: function() {
            var i, names=this.p.groupingView.sortnames[0], l = names.length;
            for (i=0;i<l;i++) {
                if (names[i]==='envVariable') {
                    $(this).jqGrid('groupingToggle',this.id+"ghead_"+i);
                } else {
                    // hide the grouping row
                    $('#'+this.id+"ghead_"+i).hide();
                }
            }
            var getColumnIndexByName = function(grid, columnName) {
                var cm = grid.jqGrid('getGridParam','colModel'),i=0,l=cm.length;
                for (; i<l; i++) {
                    if (cm[i].name===columnName) {
                        return i; // return the index
                    }
                }
                return -1;
            };

            var iCol = getColumnIndexByName($(this),'isEqual'),
            cRows = this.rows.length, iRow, row, className;
            for (iRow=0; iRow<cRows; iRow++) {
                row = this.rows[iRow];
                className = row.className;
                if ($.inArray('jqgrow', className.split(' ')) > 0) { // $(row).hasClass('jqgrow')

//this prints into console
                    console.info(row.cells[iCol]);

//here i am trying to apply filter                      
$(row.cells[iCol])
                    .filter("false")
                    .css("background", "#c8ebcc",
                            "background-color", "#DCFFFF",
                            "background-image", "none");

                }
            }

        }

** Обновлено **

@ Олег: Мне нужно скрыть все строки с isEqual как true и показывать только строки, имеющие isEqual как false со всем измененным цветом фона.Поэтому я изменил ваш код примерно так, как показано ниже, но он не скрывает строки, он просто отображает все без каких-либо изменений, где я ошибаюсь?

var i, l, data = this.p.data, rows = this.rows, item;

            l = data.length;
            for (i=0;i<l;i++) {
                item = data[i];
                if (!item.isEqual) {

                    $(rows.namedItem(item._id_))
                    .css({
                        "background-color": "#DCFFFF",
                        "background-image": "none"
                    });
                }
                else
                {
                    $(rows.namedItem(item._id_)).hide();
                }

            }

1 Ответ

1 голос
/ 13 июля 2011

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

{ name: 'isEqual', index: 'isEqual', width: 100, hidden:true }

и затем добавьте loadComplete со следующим кодом:

var i, l, data = this.p.data, rows = this.rows, item;

l = data.length;
for (i=0;i<l;i++) {
    item = data[i];
    if (!item.isEqual) {
        $(rows.namedItem(item._id_))
            .css({
                "background-color": "#DCFFFF",
                "background-image": "none"
            });
    }
}

Результат будет

enter image description here

См. Демо здесь .

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