2012-11-04 2 views
0

주 응용 프로그램에 3 개의 열이있는 DataGrid가 있습니다. 세 번째 열에서 아이템 렌더러를 사용하고 싶습니다. hbox에는 두 개의 컴포넌트가 있습니다. 하나는 버튼이고 하나는 레이블입니다. 또한 메인 애플리케이션에 슬라이더가 있습니다. DataGrid가 사용되는 슬라이더를 사용하여 주 응용 프로그램 파일에서 itemrenderer 버튼의 알파를 변경하고 싶습니다. 데이터 렌더러 내에서 데이터 속성을 사용하여 데이터 공급자 속성에 액세스 할 수 있습니다. 하지만 부모 응용 프로그램 속성에 어떻게 액세스합니까? 이를 위해 맞춤 DataGrid를 만들고 데이터 바인딩을 사용하여 슬라이더의 값을 전달하려고했습니다. 그러나 재산에 접근 할 수 없었습니다. 같은 일을했을 때 목록에서 item renderer의 listData 속성을 사용하여 속성에 액세스 할 수 있었지만 DataGrid의 경우에는 그렇게 할 수 없었습니다.항목 렌더러 내에서 부모 응용 프로그램 속성에 액세스하는 방법

답변

1

는 어떻게

일반적으로 부모 응용 프로그램의 속성에 액세스 할; 나는 당신이하지 않는 것이 좋습니다 것입니다. itemRenderer는 데이터 요소를 통해 필요한 모든 속성에 액세스 할 수 있어야합니다. dataProvider에 관련합니다.

캡슐화가 중단되어 표시 계층에서 상위에있는 구성 요소의 속성에 액세스합니다.

그렇다면이 방법에는 여러 가지가 있습니다.

기본 응용 프로그램에 액세스하려면 FlexGlobals.topLevelApplication을 사용하여 최상위 응용 프로그램에 액세스하십시오.

슬라이더 값을 정적 변수로 저장하고 그런 식으로 itemRenderer에서 액세스 할 수 있습니다.

일부 데이터/모델 객체에 슬라이더 값을 저장하고 종속성 삽입 프레임 워크 (예 : Swiz 또는 Robotlegs)를 사용하여 해당 데이터/모델 객체를 itemRenderer에 삽입 할 수 있습니다. 당신은 외부 속성에 액세스하려면

+1

+1하면 안됩니다. 또한 ClassFactory를 만들고이를 사용하여 렌더러에 슬라이더에 대한 참조 또는 해당 값을 반영하는 바인딩 가능한 데이터 객체를 제공 할 수 있다고 덧붙였습니다. –

+0

ClassFactory를 사용하여 속성을 전송하는 데 맹점을두고 있습니다. 왜 그런지 모르겠다. 나는 항상 거기 있다는 것을 잊는다. – JeffryHouser

+0

@AmyBlankenship 어떻게하면 ClassFactory를 사용하여 부모 응용 프로그램의 속성에 액세스 할 수 있습니까? listData 속성을 사용하여 동일한 목표를 달성 할 수 있습니까? 나는 며칠간 같은 질문에 코드를 요구했다. 그것의 링크는 http://stackoverflow.com/questions/13109821/how-to-access-the-listdata-property-in-item-renderer-for-datagrid-in-flex-4 – nitin

1

, 당신은 예를 들어, itemRenderer를 내부 outerDocument를 사용할 수 있습니다

// 코드

 public var str:String = "Test"; 
     [Bindable] private var arr:Array = [ 
      {field:'ROW1'}, 
      {field:'ROW2'}, 
      {field:'ROW3'}     
     ]; 

// MXML

<mx:DataGrid id="grid" width="100%" height="100%" dataProvider="{arr}"> 
    <mx:columns> 
     <mx:DataGridColumn dataField="field"> 
      <mx:itemRenderer> 
       <mx:Component> 
        <mx:Label text="{data.field + ' ' + outerDocument.str}"/> 
       </mx:Component> 
      </mx:itemRenderer> 
     </mx:DataGridColumn> 
    </mx:columns> 
</mx:DataGrid> 

을 이 URL은 내가 말한 좋은 예를 보여줍니다. 도움이되기를 바랍니다.

+0

내 경우 렌더러가 다른 파일에 있습니다. 사용자가 드래그 할 때 슬라이더의 값에 액세스해야합니다. 슬라이더의 현재 값을 기반으로 설정 데이터 함수에서 논리를 설정하려고합니다. – nitin

관련 문제