2012-05-08 108 views
0

在我的Flex應用程序中,我有一個數據網格作爲2列可編輯,其餘列是不可編輯的。在某些情況下,在運行時,我必須將可編輯列更改爲不可編輯...我該怎麼做?有什麼建議麼?? 繼承人我的代碼...Flex Datagrid可編輯在運行時

<mx:AdvancedDataGrid id="adg1" editable = "true" designViewDataType="tree"> 
         <mx:columns> 
            <mx:AdvancedDataGridColumn headerText="Name" dataField="name" editable ="true"/> 
            <mx:AdvancedDataGridColumn headerText="Age" dataField="age" editable ="true"/> 
            <mx:AdvancedDataGridColumn headerText="Roll No" dataField="num" editable = "false"/> 
         </mx:columns> 
      </mx:AdvancedDataGrid> 

Thanxx提前..

+1

在AS3腳本做到這一點(adg1.columns [0]爲的AdvancedDataGridColumn).editable = FALSE; //爲第一列。您可以替換獲取其他列的索引。 –

回答

1

方法1: 你可以通過列循環,並檢查可編輯的屬性:

  for (var i:int = 0; i < adg1.columns.length; i++) 
      { 
       if (adg1.columns[i] is AdvancedDataGridColumn) 
       { 
        var myCol:AdvancedDataGridColumn = adg1.columns[i] as AdvancedDataGridColumn; 

        trace(myCol.editable); 

        //for example, change Age column to non editable 
        if (myCol.headerText == 'Age') 
        { 
         myCol.editable = false; 
        } 
       } 
      } 

方法2:

如果您設置id列,如:

<mx:AdvancedDataGridColumn id="ageCol" headerText="Age" dataField="age" editable ="true"/> 

你可以這樣訪問它:

trace("before ageCol editable:",ageCol.editable); 

var indx:int = adg1.columns.indexOf(ageCol); 
adg1.columns[indx].editable = false; 

trace("after ageCol editable:",ageCol.editable); 

,或者如果它是適用的,只是做:

ageCol.editable = false; 
+0

第一種方法在IF條件中使用dataField .. headerText經常更改經常更改 – Kamal

+0

@Kamal嗯,我想他明白了: )感謝評論無論如何。 – Nemi

1

adg1.columns會回報你陣列列的。

遍歷每個鑄造成列的AdvancedDataGridColumn 與「dataField屬性」檢查條件,並使其可編輯來爲你的願望。

+0

對不起...我知道如何使用dataField編碼tat .. – Aravinth