2017-10-18 9 views
0

선택 편집 유형으로 조건부로 열 텍스트의 색상을 지정하고 싶습니다. 사용자 정의 포맷터를 사용하면 값이 변경됩니다. 아래 코드는 작동하지 않습니다.선택 편집 유형 및 사용자 정의 포맷터없이 조건부로 열을 색상 표시하는 방법

function generateEventHandlerGrid(eventsJson){ 
     var eventGrid = $("#eventGrid"); 
      eventGrid.jqGrid({ 
       datatype: 'local', 
       data: eventsJson.eventInfo, 
      jsonReader: {repeatitems: false}, 
    colNames: ['Event Category', 'Event Creation'], 
{name: 'eventCategory', index: 'eventCategory',align:"center"}, 
{name: 'enabled', index: 'enabled', width:"100px",align:"center",editable:true,edittype: 'select', 
       editoptions: {value: "1:Enable;0:Disable"}, formatter: function (cellvalue, options, rowObject){ 
        if (rowObject.enabled == 1){ 
         var cellHtml = "<span style='color:" + "red" + "' originalValue='" + rowObject.enabled + "'>" + "Enable" + "</span>"; 
         return cellHtml; 
        }else{ 
         var cellHtml = "<span style='color:" + "green" + "' originalValue='" + rowObject.enabled + "'>" + "Disable" + "</span>"; 
         return cellHtml; 
        } 
       }}], 
    viewrecords: true, 
    gridview: true, 
    rownumbers: true, 
    shrinkToFit: false, 
       height: strMinimumHeight, 
       editurl: "clientArray", 
       restoreAfterSelect: false, 
       loadonce: true, 
    } 

사용자 정의 포맷터없이 값을 기준으로 텍스트 색상을 설정하는 방법은 무엇입니까?

+0

그것은 코드를 읽기 매우 어렵다과 cellattrformatter를 대체 할 시도 할 수 있습니다. 그런데 코드도 버그가 있습니다 :'colMames' 뒤에'colModel'이 없습니다. jqGrid에 관한 모든 질문 *을 포함 시키십시오. 사용하는 (사용할 수있는) jqGrid의 ** 버전 ** 및 ** fork ** ([free jqGrid] (https://github.com/) free-jqgrid/jqGrid), 상용 [Guriddo jqGrid JS] (http://guriddo.net/?page_id=103334) 또는 이전 jqGrid 버전 <= 4.7) – Oleg

+0

작은 코드를 게시했습니다. 큰 코드가 포함되어있어 전체를 붙여 넣기가 쉽지 않습니다. getRowData를 사용하여 데이터를 다시 가져옵니다. –

+0

커스텀 포매터에서 원래 값을 어떻게 얻을 수 있습니까? jqgrid를 처음 사용했습니다. –

답변

1

맞춤형 포맷터의 목표는 의 내용물입니다. 현재 코드에서 수행하려는 작업은 셀의 외부 DOM 요소에 속성으로 설정되어 있습니다. 가장 좋은 점은 cellattr 콜백입니다. 따라서 예를 들어, 내용을으로 포맷하고 일부 스타일이나 클래스를 설정하여 셀의 속성을 변경하는 등의 포맷터를 사용할 수도 있습니다.

cellattr 콜백 매개 변수의 정확한 목록은 사용하는 jqGrid의 버전과 포크에 따라 다릅니다. 당신은 당신이 게시 된 다음 코드

cellattr: function (rowid, cellValue, rowData, cm, item) { 
    return " style='color:" + (rowData.enabled == 1 ? "red" : "green") + "'"; 
} 
+0

잘 작동합니다. 감사. 하나 더 질의, 동일한 값으로 행의 색상을 지정하려면 어떻게해야합니까? 또는 전체 행의 배경을 변경 하시겠습니까? –

+0

@DarshanShah : 안녕하세요. 일부 행의 속성 (색상 등)을 변경하기 위해'rowattr' 콜백 함수를 (격자 옵션으로 사용하고 열 안이 아닌) 사용할 수 있습니다. 해당 [demo] (http://www.ok-soft-gmbh.com/jqGrid/SimpleLocalGridChangeRowBackgroundBasedOnCheckboxes3.htm)와 함께 [이전 답변] (https://stackoverflow.com/a/10531680/315935)을 참조하십시오. 또한, 당신이 여전히 그것을 사용하지 않는 경우, 내가 개발 jqGrid의 포크, [무료 jqGrid] (https://github.com/free-jqgrid/jqGrid) 4.15.1로 업그레이 드하는 것이 좋습니다 - jqGrid의 포크. – Oleg

+0

예 이미 동일한 링크를 발견하여 구현하여 잘 작동합니다. 감사. –