2010-03-02 9 views
0

STATUS로 필드/열이 하나 인 DataGrid가 백엔드에 연결되어 있습니다. DG는 CheckBox HeaderRenderer와 itemRenderer를 모두 사용합니다. STATUS가 "실패"일 때, 나는 체크 박스를 보여주고 싶다. 그리고 그 것이 다른 것이라면 그것을 보여주지 않는다. (또는 타협하여 그것을 사용하지 않는다.) 보이는 속성은 체크 상자가 항상 표시되고 enabled = false가 회색으로 표시되지만 머리글 렌더링자가 & (아직 이유를 모르겠 음)을 선택하도록 허용하므로 아무 이유없이 효과가 없습니다. 왜 이것이 일어나고 있는지 어떤 생각입니까 ??? 코드는 매우 간단합니다 :DataGrid CheckBox Itemerenderer 버그처럼 보입니다 ... 버그와 비슷합니다.

의 itemRenderer -

<?xml version="1.0" encoding="utf-8"?> 
<mx:CheckBox xmlns:mx="http://www.adobe.com/2006/mxml"> 

<mx:Script> 
<![CDATA[ 
    import com.fidelity.ORWS.view.requests.RequestStatus; 
    import mx.controls.Alert; 

    override public function set data(value:Object):void 
    { 
    super.data = value; 
    this.selected = false; 

    if(data.status == 'SUCCESS' || data.status == 'PROCESSING') 
     { this.enabled = false; }   
    } 
]]> 
</mx:Script> 
</mx:CheckBox> 

HeaderRenderer는 -

<?xml version="1.0" encoding="utf-8"?> 
<mx:CheckBox xmlns:mx="http://www.adobe.com/2006/mxml"> 
<mx:Script> 
<![CDATA[ 
    import mx.collections.ArrayCollection; 
    import mx.controls.DataGrid; 

    override protected function clickHandler(event:MouseEvent):void 
    { 
    super.clickHandler(event); 

    var dg:DataGrid = this.owner as DataGrid; 
    var dp:ArrayCollection = dg.dataProvider as ArrayCollection; 
    var cb:requestcheckboxRenderer; 

    for (var i:int=0;i<dp.source.length;i++) 
    { 
    cb = dg.indexToItemRenderer(i) as requestcheckboxRenderer; 
    cb.selected = (selected) ? true : false; 
    } 
    } 
]]> 
</mx:Script> 
</mx:CheckBox> 

답변

1

DataGrid를 자체가 렌더링 표시하고 추가 할 때 보이지 않는하거나 제거 할 수 있기 때문에 visible 속성이 작동하지 않습니다 . 확인란을 숨기려면 DataGrid의 headerRnderer를 숨기는 순간 다른 것으로 변경하거나 HeaderRenderer을 확인란이 포함 된 컨테이너 (VBox 또는 그 이상)로 변경해야합니다. 그런 다음 체크 상자의 visible 속성을 설정할 수 있습니다.이 속성은 헤더 렌더러의 visible 속성과 다릅니다.

enabled=false으로 설정 한 경우에도 확인란의 경우 이는 아마도 clickHandler을 무시하고 있기 때문일 수 있습니다. 이 버튼은 클릭 할 때 여전히 호출되며, 이는 의미가 있습니다 (클릭이 더 이상 발생하지 않는 구성 요소가 비활성화 되었기 때문이 아닙니다). 대신에 다른 방법으로 체크 박스를 변경해야합니다. 예를 들어 change 이벤트에 이벤트 리스너를 추가합니다.

+0

감사합니다. 마지막으로 작동하도록 만들었습니다. 기본적으로 확인란에 ID를 허용하고 숨기기/표시 할 수있는 컨테이너의 확인란을 감싸는 중입니다. 어쨌든 이것이 바람직한 솔루션 이었으므로 더 이상 활성화/비활성화가 더 이상 걱정되지 않았습니다. 다시 한 번 감사드립니다 ... – dude22

관련 문제