2013-11-15 5 views
1

조건부 서식을 둘러싼 상당한 양의 정보를 보았지만 제대로 작동하지 않는 것으로 보입니다. 값 (날짜)이 과거 일 때 셀의 글꼴을 빨간색으로 만들고 싶습니다. 나는 그것이 비록 작동시킬 수없는 것jqGrid - 조건부 서식 셀 기반 날짜 값

{ 
       name: 'IsoDate', index: 'IsoDate', align: 'left', sorttype: 'date', datefmt: "m/d/Y", 
       formatter: function (cellvalue, options, rowobject) { var now = new Date(); if (cellvalue < now) { return '<span class="error">' + cellvalue + '</span>'; } else { cellvalue; } } 
      } 

:

이것은 내가 지금 가지고있는 일반적인 생각이다. 모든 적색 값 또는 모든 정의되지 않은 값을 반환하도록했습니다. 아직 날짜가없는 필드가 있습니다.

도움을 주시면 감사하겠습니다. 감사!

업데이트 :

다음은 내가 사용했던 코드입니다. 실제로 날짜에 대한 다른 열을 참조하고있었습니다.

cellattr: function (rowid, val, rawObject, cm, rdata) { 
        var idate = new Date(rawObject['IsoDate']); 
        return (idate < new Date()) ? ' class = "ui-state-error-text"' : ' class = "field-validation-green"'; 
       } 
+0

'rawObject [ 'IsoDate'] '대신'rawObject.IsoDate' 문법을 사용하는 것이 더 낫습니다. – Oleg

답변

5

대신 custom formattercellattr을 사용하는 것이 좋습니다. 이 경우에도 formatter: "date"과 같이 predefined formatter을 계속 사용하고 선택한 <td> 셀에 style 또는 class 속성을 추가로 설정할 수 있습니다. 예를 들어, 클래스 ui-state-error-text은 셀의 글꼴을 빨간색으로 만드는 좋은 선택입니다. 따라서 열의 정의는

{ 
    name: "IsoDate", sorttype: "date", 
    formatter: "date", formatoptions: {newformat: "m/d/Y"}, 
    cellattr: function (cellvalue) { 
     return (cellvalue < new Date()) ? ' class="ui-state-error-text"' : ''; 
    } 
} 

어떤 데이터가 입력되어 있는지, 게시 한 코드가 올바르게 작동하는지 확실하지 않습니다. 필요한 경우 위의 코드를 cellvalue의 형식과 일치하도록 변경할 수 있습니다.

the answer, this one, this one 및 다른 많은 사용 예제는 cellattr을 참조하십시오.

+0

나는 그것이 날짜 비교를 정확하게 평가하지 않을 수도 있다고 생각합니다. 나는 isodate가 Date로 정의되는 js viewmodel을보고 있기 때문에 왜 100 % 확실하지는 않습니다. – mrshickadance

+0

@mrshickadance : 서버에서 데이터를 유지하는 것은 중요하지 않습니다. jqGrid에 데이터를 채우는 것이 중요합니다. 'cellattr '안에있는'cellvalue'의 예제를 포함시켜 주시겠습니까? 예를 들어'alert (typeof cellvalue)'와'alert (cellvalue)'를 포함하거나'cellattr' 콜백 안에 breakpoint를 설정하고'cellvalue'의 타입과 값을 검사 할 수 있습니다. – Oleg

+0

내가 변경 한 한 가지는 매개 변수입니다. cellattr : function (rowid, val). 발에 대해 경고를하는 경우 유형은 문자열이고 2013 년 11 월 20 일은 되돌아 오는 가치의 예입니다. – mrshickadance

0

조건문에 return 키워드가 누락되었습니다. 그래서 "붉은 색"값만 보입니다.

사용 :

else { return cellvalue; } 

대신 :

else { cellvalue; }