【问题标题】:Datagrid update ItemRenderer with ItemEditor valueDatagrid 使用 ItemEditor 值更新 ItemRenderer
【发布时间】:2012-05-29 17:04:57
【问题描述】:

我有一个带有 ItemRenderer 和 ItemEditor 的数据网格。 单击时,由于我的数据网格是可编辑的,我可以修改编辑单元格的值。 但是,当我使用 Tab 键使这些更改生效时,例如 itemrender 的值与开始时相同,不会出现任何更改。

你能告诉我如何解决这个问题吗?

<mx:DataGridColumn dataField="scRub2" headerText="{sNomCol2}" 
editable="true" width="{iNomCol2}"id="dgc1" wordWrap="true"
                                                                itemRenderer="itemRenderer.MultilineHTMLRenderer"
itemEditor="itemRenderer.irHtmlText"
editorDataField="htmlModif"

// 项目编辑器

<?xml version="1.0" encoding="utf-8"?>

<fx:Script>
    <![CDATA[

        public var htmlModif:String;
        protected function lblData_changeHandler(event:Event):void
        {
            htmlModif = lblData.htmlText;
        }
    ]]>
</fx:Script>


<mx:TextArea id="lblData" top="0" left="0" right="0" bottom="0"     
             htmlText="{dataGridListData.label}"  preinitialize="initTA()"
             change="lblData_changeHandler(event)">
    <fx:Script>
        <![CDATA[

            import flash.events.Event;

            import mx.controls.dataGridClasses.DataGridListData;

            import mx.controls.dataGridClasses.DataGridListData;
            import mx.controls.listClasses.BaseListData;
            [Bindable("dataChange")] private var _listData : BaseListData;

            override public function get listData():BaseListData
            {
                return _listData;            
            }                   
            override public function set listData( value : BaseListData ) : void
            {
                _listData = value;
            }

            private function onChange(event:Event):void
            {
                this.data[ (listData as DataGridListData).dataField ] = lblData.htmlText;
            }
            public function initTA():void {         
                addEventListener("dataChange", handleDataChanged);
            }   

            public function handleDataChanged(event:Event):void {       
                // Cast listData to DataGridListData. 
                var myListData:DataGridListData = 
                    DataGridListData(listData);
                // Access information about the data passed 
                // to the cell renderer.
                trace("row index: " + String(myListData.rowIndex) + 
                    " column index: " + String(myListData.columnIndex));

            }
        ]]>
    </fx:Script>
</mx:TextArea>

谢谢

【问题讨论】:

    标签: actionscript-3 apache-flex mxml


    【解决方案1】:

    我没有运行您的代码,但认为将字段 htmlModif 更改为 get 函数可以解决您的问题

    public var htmlModif:String;
            protected function lblData_changeHandler(event:Event):void
            {
                htmlModif = lblData.htmlText;
            }
    

        public function get htmlModif():String
        {
            return lblData.htmlText;
        }
    

    希望有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      • 2012-03-10
      • 1970-01-01
      • 2010-11-18
      • 2012-01-21
      相关资源
      最近更新 更多