Ячейка набора пользовательских форматов jqGrid не будет работать с options.rowId - PullRequest
0 голосов
/ 20 декабря 2011

Я просмотрел все посты, наконец-то заставил setCell работать с жестко закодированными значениями, но без использования options.rowId.

 function StatusFormatter(cellvalue, options, rowObject) {
    if (cellvalue == 'C'){
        jQuery("#list").setCell(options.rowId , 'SOORDLINE', '', { color: 'red' });
        jQuery("#list").setCell("[2.000]", 'SOORDLINE', '', { color: 'red' });
        jQuery("#list").setCell('[2.000]', 'SOREQDATE', '', { color: 'red' });
        jQuery("#list").setCell(options.rowId, 'SOPRICE', '', { color: 'red' });
    }
    return cellvalue;
    };  

ПЕРВАЯ и ПОСЛЕДНЯЯ строки не работают, но 2 с жестко закодированной строкой ДЕЙСТВУЮТ. Я проверил, что возвращается в option.rowId, и они совпадают с жестко закодированными значениями (просто разные в зависимости от строки, конечно. Что я пропускаю? Пожалуйста, помогите. Я не вижу никакой разницы между строками или значениями.

EDITED-

Я попробовал ответ, и, похоже, это то, что мне нужно. Я попробовал следующее

      { name: 'SOORDLINE', index: 'SOORDLINE', width: 25, search: false ,celattr: function () { return ' style="color: red"'; }
},

По крайней мере, сделайте их всех красными, прежде чем я углублюсь в логику, и это ничего не сделало для меня.

1 Ответ

1 голос
/ 21 декабря 2011

Извините, но вы используете пользовательский форматер в абсолютно неверный путь .Цель пользовательского форматера - предоставить HTML-фрагмент для заполнения содержимого ячеек в соответствующем столбце.Таким образом, StatusFormatter будет называться до того, как будет создана строка с идентификатором, равным options.rowId.Кроме того, в целях производительности одно использование обычно gridview: true.в случае, если все содержимое сетки (все тело сетки) будет сначала построено как строка, и только после этого будет помещено в тело сетки за одну операцию.Это повышает производительность, потому что после размещения любого элемента веб-браузер должен пересчитать положение всех других элементов на странице.

Если вы хотите установить цвет текста в ячейке SOORDLINE, вам следует вместо этого cellattr:

celattr: function () { return ' style="color: red"'; }

celattr можно использовать также в форме celattr: function (rowId, cellValue, rawObject) {...}, и вы можете проверить свойство rawObject, которое представляет значения для любого столбца и возвращает стиль ячейки на основе ячейки.value.

В качестве альтернативы вы можете перечислить строки внутри loadComplete и установить стиль для элемента <tr> вместо установки одинаковых стилей для каждой строки.См. ответ в качестве примера.

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