2012-05-08 7 views
0

私のフレックスアプリケーションで私は編集可能な2列としてデータグリッドを持ち、残りの列は編集できません。いくつかの条件では、実行時に編集可能な列を編集不可能に変更する必要があります...どうすればいいですか?助言がありますか?? HERESに私のコード...事前に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

この(adg1.columns [0]のAdvancedDataGridColumnなど)偽= .editableを行います。 //最初の列に対して。他の列を取得するために、索引を置き換えることができます。 –

答えて

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); 

またはそれが適用された場合、ちょうど行う:AS3スクリプト内

ageCol.editable = false; 
+0

最初のメソッドのIF条件でdataFieldを使用します。headerTextは頻繁に変更されます – Kamal

+0

@Kamalまあ、とにかくコメントしてくれてありがとう。 – Nemi

1

adg1.columnsはあなたの列の配列を返すでしょう。

ループのAdvancedDataGridColumnに をそれぞれのキャストカラムを通すと「データフィールド」で状態を確認し、あなたが望むようにそれが編集可能または編集不可にします。

+0

申し訳ありません...私はdtintを取得し、dataFieldを使ってtatをコード化する方法を知らない... – Aravinth

関連する問題