2012-08-27 45 views
0

我有一個2列mx DataGrid。第一列的數據呈現在TextInput中,第二列呈現器在ComboBox中呈現。當我更改ComboBox中的選定值時,我希望相同索引的TextInput將其文本更改爲在ComboBox中選定的值。誰能幫我這個?我的代碼如下。在mx Datagrid中使用itemRenderer

<mx:DataGrid id="myGrid" rowHeight="25" dataProvider="{Testarray}" width="100%" height="205" chromeColor="#D0CCAF" headerHeight="0" showHeaders="false" > 
       <mx:columns> 
        <mx:DataGridColumn headerText="My Header 1"                   
             editable="true"                   
             dataField="LBL"                    
             > 
         <mx:itemRenderer> 
          <fx:Component> 
           <mx:HBox horizontalAlign="left" horizontalScrollPolicy="off" verticalScrollPolicy="off"> 



            <s:TextInput id="label_txt" text="{data.LBL}" width="98%"/> 
           </mx:HBox> 
          </fx:Component> 
         </mx:itemRenderer> 
        </mx:DataGridColumn>  

        <mx:DataGridColumn headerText="My Header 2"                  
             editable="true"                     
             rendererIsEditor="true"                   
             dataField="ALIAS"                    
             > 
         <mx:itemRenderer> 
          <fx:Component> 

            <renderers:comboItemRenderer height="80%" change="comboitemrenderer1_changeHandler(event)" lookupField="ALIAS" labelField="ALIAS" dataProvider="{outerDocument.searchCustomizationComponents_array}"> 
             <fx:Script> 
              <![CDATA[ 
               import mx.events.DataGridEvent; 
               import mx.events.ListEvent; 

               protected function comboitemrenderer1_changeHandler(event:ListEvent):void 
               { 
           //WHAT TO PUT HERE? 
               } 

              ]]> 
             </fx:Script> 

            </renderers:comboItemRenderer> 
          </fx:Component> 
         </mx:itemRenderer> 
        </mx:DataGridColumn> 

       </mx:columns> 
      </mx:DataGrid> 

回答

0
I got it myself. Thanks buddies. 
I needed to add these 2 lines of codes for the textInput to take the value of the selectedItem int he ComboBox. 
protected function comboitemrenderer1_changeHandler(event:ListEvent):void 
               { 
                outerDocument.myGrid.dataProvider[outerDocument.myGrid.selectedIndex]['LBL'] = this.selectedItemKey; 
                outerDocument.myGrid.invalidateList(); 

            } 
Also note that the code for my comboitemrenderer below: 
    <mx:ComboBox 
     xmlns:mx="http://www.adobe.com/2006/mxml" 
     dataChange="setSelected()" 
     change="onSelectionChange(event)" 
     focusEnabled="true"> 
     <mx:Script> 
      <![CDATA[ 
       import mx.events.DataGridEvent; 
       import mx.events.ListEvent; 
       import mx.controls.dataGridClasses.DataGridListData; 

       private var _ownerData:Object; 
       private var _lookupField:String = "value"; 

       // When using this component as an itemEditor rather than an itemRenderer 
       // then set ' editorDataField="selectedItemKey"' on the column to 
       // ensure that changes to the ComboBox are propogated. 
       [Bindable] public var selectedItemKey:Object; 

       public function set lookupField (value:String) : void { 
        if(value) { 
         _lookupField = value; 
         setSelected(); 
        } 
       }   
       override public function set data (value:Object) : void { 
        if(value) {      
         _ownerData = value; 
         setSelected(); 
        } 
       } 
       override public function get data() : Object { 
        return _ownerData; 
       }    
       private function setSelected() : void { 
        if (dataProvider && _ownerData) { 
         var col:DataGridListData = DataGridListData(listData); 
         for each (var dp:Object in dataProvider) { 
          if (dp[_lookupField] == _ownerData[col.dataField]) { 
           selectedItem = dp; 
           selectedItemKey = _ownerData[col.dataField]; 
           return;  
          } 
         }      
        } 
        selectedItem = null; 
       } 
       private function onSelectionChange (e:ListEvent) : void { 
        if (selectedItem && _ownerData) {      
         var col:DataGridListData = DataGridListData(listData); 
         _ownerData[col.dataField] = selectedItem[_lookupField]; 
         selectedItemKey = selectedItem[_lookupField]; 

    } 
       }     
      ]]> 
     </mx:Script>  
    </mx:ComboBox> 
相關問題