0

私のフレックスアプリケーションでは、2つの列が編集可能で残りの列は編集できないため、データグリッドがあります。ある条件では、実行時に編集可能な列を編集不可に変更する必要があります...どうすればこれを行うことができますか?? 助言がありますか??これが私のコードです...

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

事前にサンクス..

4

2 に答える 2

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;
于 2012-05-08T10:23:19.757 に答える
1

adg1.columns llは列の配列を返します。

それぞれをAdvancedDataGridColumnにキャストする列をループし 、「dataField」で条件をチェックして、必要に応じて編集可能または編集不可にします。

于 2012-05-08T05:15:47.127 に答える