2012-01-21 3 views
0

У меня есть jqgrid с подсетой.jqgrid: Как отформатировать основные/детализированные сетки?

Я пытаюсь применить различные цвета для мастеринга и детализации сеток. У меня есть два правила: первый - это чередование нечетных и парных цветов, а другой - применение определенного CSS к строке, основанной на значениях определенного поля.

Оба мастера & деталь сетка, содержит следующее gridComplete функции, где, очевидно, ChildNodes индекса изменяется вызывают таблицы содержат различные поля:

gridComplete: function() { 
      var _rows = $(".jqgrow"); 
      for (var i = 0; i < _rows.length; i++) { 
       _rows[i].attributes["class"].value += " " + _rows[i].childNodes[4].textContent; 
       _rows[i].attributes["class"].value += " " + _rows[i].childNodes[4].innerText; 
      } 
      applyZebra("jqTicketgrid"); 
     } 

функция applyZebra обеспечивает чередование нечетных/пары цвета и уже была испытана на другом сетка, которая не содержит подрезку. Для справки, я нашел выше решения в других разрешенных вопросах этого форума, и оба работают с «простыми» jqgrids (не master/detail).

ПРОБЛЕМА Мастера сетка отформатирована только тогда, когда я нажимаю, чтобы расширить строки детализации, в то время как деталь Подсеточных никогда чередующихся цвета, ни применять формат на основе содержимого ячеек ...

Где я неправ? Pheraps Я должен перехватить другое событие, которое не является gridComplete? В противном случае с сеткой & субгриды невозможно использовать _rows [x] & childNodes [y] атрибуты?

Просим уточнить, если необходимо, thx.

Заранее благодарен!

ответ

0

Я предполагаю, что ошибка в коде является то, что вы используете $(".jqgrow") вместо $(".jqgrow", this) где this внутри gridComplete будет либо DOM элемент <table> сетки или subgid (я полагаю, вы используете grid as subgrid).

Кроме того, я бы не рекомендовал вам использовать текущий код вообще. Гораздо эффективнее и просто использовать cellattr. Параметр rawObject позволяет получить доступ ко всем другим ячейкам текущей строки. В the answer вы найдете пример реализации.

+0

Спасибо @Oleg! Я попытался изменить с помощью $ (". Jqgrow", это), но он все равно не работает. О cellattr, я пытаюсь заставить его работать, и я согласен с вашими интересными соображениями. Но я не могу заставить его работать. Можете ли вы привести мне пример, пожалуйста? Я даже пытался поместить этот код в определение сетки, но он не работает: cellattr: function (rowId, cellValue, rawObject, cm, rdata) { return 'class = "A"'; } Еще раз спасибо! – Larry

+0

У меня есть класс с именем A, который я использую для обозначения строк по степени серьезности ... – Larry

+0

Хорошо. Я преуспеваю, чтобы заставить его работать ** только для ячейки **: я поставил cellattr в colmodel, просто чтобы проверить: 'cellattr: function (rowId, tv, rawObject, cm, rdata) {return 'class =" A " ; } 'и это работает! ** Можете ли вы объяснить мне, как я могу добавить класс во всю строку, пожалуйста? ** Большое спасибо @Oleg! – Larry