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
我有一个包含两列 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