2011-02-11 7 views
2

이것은 매우 단순해야하는 것처럼 보이지만 Flex DataGrid에서 행을 반복하는 방법을 찾을 수조차 없습니다.플렉스 DataGrid : 프로그래밍 방식으로 행 강조 표시

for each(var row:Row in myDataGrid.Rows) 
{ 
    if(row.DataObject.Number == 1) 
    { 
     row.Color = Red; 
    } 
} 

난에 클릭 중 하나가 저장 처리되는 저장 버튼을하려고, 또는 잘못된 행을 강조하고 있습니다 :

기본적으로 내가 무엇을 달성하기 위해 노력하고있어이 의사 코드 같은 것입니다 행이 유효하지 않은 이유를 사용자에게 알리는 메시지를 표시합니다. 다른 복잡한 점 때문에 입력 할 때 각 행의 유효성을 검사 할 수는 없습니다. 어떤 도움을 주셔서 감사합니다! 감사.

답변

2

데이터 그리드는 직접 조작하지 않고 데이터에 의해 구동되도록 설계되었습니다. 수행하려는 작업을 수행하는 한 가지 방법은 제공자의 데이터 객체에 "valid"와 같은 속성을 추가하고 렌더러에 코드를 추가하여 "valid"상태를 기반으로 모양을 변경하는 것입니다. 그렇게하면 데이터 공급자의 객체를 반복하고 유효성 검사를 기반으로 "유효한"속성을 설정할 수 있습니다. 그러면 데이터 그리드의 행이 자동으로 모양이 변경됩니다.

희망이 있습니다. 이 같은

1

데이터 그리드 자체에서이 작업을 수행 할 수 있는지 확신 할 수 없지만 각 항목에 대한 항목 렌더러가있는 경우 강조 표시 논리를 사용할 수 있습니다.
<mx:DataGrid itemRenderer="ItemRendererClass"(...) ></mx:DataGrid>

를 다음 클래스 "ItemRendererClass는"IDataRenderer의 구현으로 정의 : 기본적으로

, 당신은 당신의 데이터 그리드의 아이템 렌더러 클래스를 정의

implements="mx.core.IDataRenderer" 

이 당신에게 수있는 가정, 단순한 설명이다 자신에 대해 이렇게하는 방법을 알아보십시오 :)

1

설정 데이터를 무시하여이 작업을 수행했습니다. 아래 샘플 코드를 제공했습니다.

override public function set data(value:Object):void 
    { 
     super.data=value; 
     if(value!=null && value.hasOwnProperty("state") && value.state == "Final State"){    
       setStyle("color", 0xb7babc); 
     }else{ 
      setStyle("color", 0x000000); 
     } 
     this.selectable=false; 
     super.invalidateDisplayList(); 
    } 
관련 문제