2012-01-07 1 views
3

에 대한 조건부 서식을 할 수있는 jqGrid 열에서 셀 값을 얻을 수 있습니다 그리고 난 셀에있는 데이터의 값 (의 정수)에 따라 컬럼의 뒷면 색상을 포맷 할 :어떻게 내가있는 jqGrid의 TreeGrid에 사용하고 배경색

   { 
       name: 'missingBooks', 
       cellattr: function (rowId, tv, rawObject, cm, rdata) { 

       //conditional formatting 
        if (rawObject[11] > 0) { 
         return 'style="background-color:#FFCCCC"'; 
        } 
       }, 
       width: 75, 
       unformat: originalValueUnFormatter, 
       formatter: missingBooksFormatter, 
       align: "right", 
       index: 'missingBooks', 
       hidden: false, 
       sorttype: 'int', 
       sortable: true 
      }, 

이 잘 작동하지만 내 문제는 cellAttr 콜백에 있습니다 : I 설치 열이 곳 여기

은 예입니다. 이 조건부 서식 라인에서 :

 if (rawObject[11] > 0) { 
         return 'style="background-color:#FFCCCC"'; 
        } 
나는 내가 rawobject를에 인덱스가 있고 내가 사용하고 무엇을 열 파악하려는 해달라고 그래서이 로직을 재사용하고자

. 나는 이런 식으로 할 수있는 방법이 있기를 바랐다 :

 if (rawObject.missingBooks > 0) { 
         return 'style="background-color:#FFCCCC"'; 
        } 

그러나 이것은 정의되지 않은 것 같다. 이 방법은 내가 새로운 열을 추가 할 경우이 모든 조건부 서식 코드를 다시 색인해야하지 않습니다.

답변

2

이 문제점을 이해합니다. Tony에게 jqGrid 코드를 약간 변경하도록 제안했습니다. 대부분은 rd 같은 추가 매개 변수를 사용하여 루프 호출 addCell에 대한 다음의 다음 rd 제를 채우기 위해 코드에서 the place를 수정하기에 충분하다. 기능 addCellformatCol에 정보를 전달할 수 있고 formatCol이 원하는대로 당신처럼 정확하게 같은 형식의 정보를 가지고있는 추가 매개 변수 rdcellattr를 호출 할 수 있습니다.

그럼에도 불구하고 하나는 비교적 쉽게 당신이있는 jqGrid 코드의 변경없이 필요가 거의 같은 결과를하기 위해 수 있습니다. 이렇게하려면 이름을 기준으로 rawObject에있는 열의 인덱스를 제공 할 수있는지도 개체를 만들면됩니다.

예를 들어 아직 채우지 않은 경우 beforeRequest 또는 beforeProcessing을 사용하여지도를 채울 수 있습니다.

var colMap = {}; 
$("#tree").jqGrid({ 
    ... 
    colModel: [ 
     {name: 'missingBooks', 
      cellattr: function (rowId, tv, rawObject, cm, rdata) { 
       //conditional formatting 
       if (Number(rawObject[colMap.missingBooks]) > 0) { 
        return ' style="background-color:#FFCCCC"'; 
       } else { 
        return ''; 
       } 
      } 
      ... 
    ], 
    beforeRequest: function() { 
     if ($.isEmptyObject(colMap)) { 
      var i, cmi, 
       cm = $(this).jqGrid('getGridParam', 'colModel'), 
       l = cm.length; 
      for (i = 0; i < l; i++) { 
       cmi = cm[i]; 
       colMap[cmi.name] = i; 
      } 
     } 
    } 
}); 

그래서 코드가 인덱스 11 코드의 일부 수정 후 변경 될 수 있습니다 rawObject[11] 같은 인덱스의 사용이없는 것 같은 코드 캔 보인다.

당신은 해당 데모 here을 볼 수 있습니다.