2012-01-21 3 views
0

서브 글리드가있는 jqgrid가 있습니다.jqgrid : 마스터/세부 그리드를 포맷하는 방법은 무엇입니까?

마스터 및 세부 그리드에 다른 색상을 적용하려고합니다. 두 가지 규칙이 있습니다. 첫 번째는 홀수 및 쌍 색상을 번갈아 사용하고 다른 하나는 특정 필드의 값에 따라 특정 CSS를 행에 적용하는 것입니다.

모두 마스터 & 세부 그리드는 분명 인덱스가 원인 테이블이 다른 필드를 포함 달라 childNodes에 다음과 같은 gridComplete 기능을 포함

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 (마스터/세부 정보 아님)로 작동합니다.

문제 나는 세부 행을 확장하기 위해 클릭하는 경우에만 마스터 그리드, 포맷하면서 상세 아 격자 결코 다른 색상도 셀 내용에 따라 서식을 적용 ...

내가 잘못

? Pheraps 나는 gridComplete가 아닌 다른 이벤트를 차단해야합니까? 그렇지 않으면 격자 & subgrids로 _rows [x] & childNodes [y] 속성을 사용할 수 없습니까?

필요하면 설명을 요청하십시오.

미리 감사드립니다.

답변

0

나는 코드에서 오류가 gridComplete의 내부 this 그리드 또는 subgid (나는 가정 당신이 grid as subgrid 사용)의 <table>의 DOM 요소가 될 것 위치를 $(".jqgrow") 대신 $(".jqgrow", this)를 사용하는 것이 가정하자.

또한 현재 코드를 사용하지 않는 것이 좋습니다. cellattr을 사용하는 것이 훨씬 효과적이고 간단합니다. rawObject 매개 변수를 사용하면 현재 행의 다른 모든 셀에 액세스 할 수 있습니다. the answer에는 구현 예가 있습니다.

+0

@Oleg! $ (".jqgrow", this)로 수정하려고했지만 여전히 작동하지 않습니다. cellattr에 관해서, 나는 그것을 얻으려고 노력하고 있으며 흥미로운 고려 사항에 동의합니다. 그러나 나는 그것을 작동시킬 수 없다. 예를 들어 주시겠습니까? 이 코드를 그리드 정의에 넣기 위해 노력했지만 작동하지 않습니다. cellattr : function (rowId, cellValue, rawObject, cm, rdata) { return 'class = "A"'; } 다시 한번 감사드립니다. – Larry

+0

나는 심각도별로 행을 표시하는 데 사용하는 A라는 클래스가 있습니다 ... – Larry

+0

Ok. 나는 cellattr을 colmodel에 넣는다 : cellattr : function (rowId, tv, rawObject, cm, rdata) {return 'class = "A"' ; }'그리고 그것은 작동합니다! ** 전체 행에 수업을 추가하는 방법을 설명해 주시겠습니까? ** 고맙습니다. @Oleg! – Larry

관련 문제