2011-03-11 3 views
1

내가 2 열이있는 gridpanel이 있다고 할 수 있습니다 열을 렌더링 : 해당 저장소의 dataIndex는 같은 이름에 extjs 조건부

에 extjs에서

을 가지고 이름과 급여를 렌더러 기능은 다음과 같이 진행됩니다

function(value, metaData, record, rowIndex, colIndex, store){} 

이제 내가 방탕 한 사람의 이름을 기반으로 방랑자를 부를 때 다른 렌더링을하고 싶다면 어떻게해야합니까? e, g.

function(value, metaData, record, rowIndex, colIndex, store){ 
if (record.name == 'Salary'|| record.id == 'Salary') 
{ 
//render logic 
} 
else if (record.name == 'Name'|| record.id == 'Name'){ 
    //different render logic 
} 
} 

올바른 구문은 무엇입니까?

답변

1

음, 구문 학적으로는 정확합니다. 그러나 if 문의 조건이 올바르지 않습니다. value 변수는 렌더링 될 값을 보유하므로 조건을 확인하는 경우 조건이 매우 간단해야합니다.

귀하의 경우 급여 또는 이름을 렌더링하려하십니까? record 변수는 전체 레코드를 보유합니다. record.name 필드가 없습니다. 레코드 개체에는 다음 필드가 있습니다.

  1. 데이터 -> 데이터가있는 개체입니다. (이것을 사용해야한다)
  2. id -> 레코드의 Id. 당신이 어떤 비교를하고 있다면,> 프로토 타입

그래서 -> JSON 형식의 데이터

  • 가게 - -> 스토어 자체
  • 킬로그램이는
  • JSON 상점에 idProperty에 의해 지정됩니다 확인하려면 record.data.<property-name>을 사용해야합니다. 귀하의 경우에는

    당신은 이름과 급여 모두를위한 하나의 dataIndex, 그래서 코드는 다음과 같습니다

    function(value, metaData, record, rowIndex, colIndex, store) { 
    
        if(record.data.property == Name) { 
          //render logic for name 
        } 
        else if(record.data.property == Salary) { 
          // render logic for salary 
        } 
    } 
    

    그리고 마지막으로,이 기능은 컬럼의 렌더링 속성으로 이동합니다.

  • +0

    다음과 같아야합니다 : record.data.property == 'Name'? (따옴표 또는 따옴표 없음) – Victor

    +0

    샘플 조건을 입력하기 만하면됩니다. 그것은 당신의 논리에 따라야합니다. 문자열 '이름'을 확인한다면, 따옴표로 묶어야합니다. –

    관련 문제