Flex Datagrid可在运行时编辑

时间:2012-05-08 05:12:52

标签: flex datagrid flex4 advanceddatagrid

在我的flex应用程序中,我有一个数据网格,因为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>

提前完成..

2 个答案:

答案 0 :(得分:1)

adg1.columns ll会返回列数组

循环遍历将每个列投射到 AdvancedDataGridColumn 的列 并使用'dataField'检查条件,并根据需要使其可编辑或不可编辑。

答案 1 :(得分: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;