jqGrid: изменить цвет фона строки на основе значения ячейки строки по имени столбца

jqGrid имеет столбец с именем «Размещено». Его можно расположить в разных положениях в зависимости от того, как сетка настроена заказчиком, но всегда отображается.

Мне нужно изменить цвет фона строк, если столбец «Размещенный» имеет значение True

Я пробовал colmodel ниже, но предупреждение (rdata.Posted) всегда отображается неопределенным.

Как изменить цвет фона строки, если для столбца «Размещено» в этой строке установлено значение «истина»?

Я изучал множество решений Олега и других решений для изменения цвета фона, но они используют жестко заданный номер столбца. 1252] Обновление

В update2 Олег рекомендует использовать rowattr. Мне также нужно скрыть встроенную кнопку удаления и пользовательскую кнопку публикации в столбце действий. Я использую код ниже в loadComplete. Как реализовать это с помощью rowattr?

var LoadCompleteHandler = function () {
    var iCol = getColumnIndexByName($grid, 'Kinnitatud'),
      postedDateCol = getColumnIndexByName($grid, 'Kinkuup'),
      cRows = $grid[0].rows.length,
      iRow,
      row,
      className,
      isPosted,
      mycell,
      mycelldata,
      i, count,
      cm = $grid.jqGrid('getGridParam', 'colModel'),
      l,
      iActionsCol = getColumnIndexByName($grid, '_actions');
    l = cm.length;
    if (iCol > 0 || postedDateCol > 0) {
        for (iRow = 0; iRow < cRows; iRow = iRow + 1) {
            row = $grid[0].rows[iRow];
            className = row.className;
            isPosted = false;
            if ($.inArray('jqgrow', className.split(' ')) > 0) { // $(row).hasClass('jqgrow')
                if (iCol > 0) {
                    isPosted = $(row.cells[iCol]).find(">div>input:checked").length > 0;
                }
                if (postedDateCol > 0) {
                    mycell = row.cells[postedDateCol];
                    mycelldata = mycell.textContent || mycell.innerText;
                    isPosted = mycelldata.replace(/^\s+/g, "").replace(/\s+$/g, "") !== "";
                }

                if (isPosted) {
                    if ($.inArray('jqgrid-postedrow', className.split(' ')) === -1) {
                        row.className = className + ' jqgrid-postedrow';
                        $(row.cells[iActionsCol]).find(">div>div.ui-inline-del").hide();
                        $(row.cells[iActionsCol]).find(">div>div.ui-inline-post").hide();
                    }
                }
            }
        }
    }
9
задан Andrus 13 May 2012 в 19:04
поделиться