AdvancedDataGrid 可编辑 属性 问题

AdvancedDataGrid editable property issue

我有一个包含两列 UserName 和 eSigner 的 AdvancedDataGrid 控件。看起来像:

此代码:

<mx:AdvancedDataGrid id="UserGroupGrid" left="10" bottom="40" right="10" editable="true" height="226">
            <mx:dataProvider>
                <mx:GroupingCollection id="gc" source="{UserGroupList}">
                    <mx:Grouping>
                        <mx:GroupingField name="UserGroupName"/>
                    </mx:Grouping>
                </mx:GroupingCollection>
            </mx:dataProvider>
            <mx:columns>
                <mx:AdvancedDataGridColumn textAlign="left" headerText="UserName" dataField="UserName" editable="false"/>
                <mx:AdvancedDataGridColumn width="100" dataField="eSignor" headerText="eSigner" editable="true" textAlign="center" rendererIsEditor="true" editorDataField="cbSelected" editorYOffset="30">
                     <mx:itemRenderer>
                         <mx:Component>
                             <mx:HBox horizontalAlign="center">
                                <mx:Script>
                                    <![CDATA[
                                        public var cbSelected:Boolean;
                                    ]]>
                                </mx:Script>
                                <mx:CheckBox id="SignorCk" width="10" selected="{data.eSignor}" enabled="true" click="cbSelected = SignorCk.selected;" visible="{data.eSignor == null ? false : true}"/>
                             </mx:HBox>
                         </mx:Component>
                     </mx:itemRenderer>
                 </mx:AdvancedDataGridColumn>
            </mx:columns>
</mx:AdvancedDataGrid>

正如您在代码中看到的那样,我希望用户名列为 non-editable 并且 eSigner 列可编辑。当我加载页面时,我 运行 遇到了分组 header 应付账款变为可编辑的问题。当我单击“应付帐款”,然后单击浏览器外的某个地方,然后再次单击“应付帐款”时,就会发生这种情况。它看起来像这样:

我试过 this 但不太成功。由于列 UserName 的可编辑设置为 false,我想知道这里发生了什么。

itemEditBegin="preventEdit(event);"

上面的 属性 可以解决这个问题。在发布的代码中,只需添加 属性.

<mx:AdvancedDataGrid id="UserGroupGrid" itemEditBegin="preventEdit(event);" left="10" bottom="40" right="10" editable="true" height="226">

在脚本标签中添加函数:

private function preventEdit(event:AdvancedDataGridEvent):void
{
    if(event.itemRenderer.data.UserName == null) 
        event.preventDefault();
}

每当我们关注分组 header 并重新关注时,这将调用 preventEdit 函数,这将取消事件的默认编辑行为。我认为这只是一种解决方法,希望他们已经在 Flex 4 中修复了所有这些问题。

来源:Adobe