Flex CheckBox in Datagrid

stimmen
3
Im followin flex-Code: 
Auch sichtbar bei: http://www.cse.epicenterlabs.com/checkBoxDg/checkBoxDg.html
1. eine Zeile in Datagrid hinzu, indem Sie auf „AddRow“ klicken
2. Klicken Sie auf „CheckDg“, um die Werte aller Kontrollkästchen zu sehen
     - es zeigt „checkBox57“ oder „checkBox64“ oder eine ähnliche Zeichenfolge
3. Nun, „wählen“ die Checkbox in der ersten Reihe.
4. Klicken Sie erneut auf „CheckDg“
    -e Show true

Also, zunächst dp.getItemAt (i) .date gibt eine CheckBox
und später gibt er den „ausgewählten“ Wert der CheckBox?
Warum dieser Unterschied?
<?xml version=1.0 encoding=utf-8?>
<mx:Application xmlns:mx=http://www.adobe.com/2006/mxml layout=absolute viewSourceURL=srcview/index.html>
        <mx:Canvas>
        <mx:DataGrid x=69 y=119 id=dgFee editable=true dataProvider={dp}>
            <mx:columns>
            <mx:DataGridColumn headerText=Date dataField=date width=100 editable=true 
            editorDataField=selected rendererIsEditor=true>
            <mx:itemRenderer>
                <mx:Component>
                    <mx:CheckBox selected=false>
                                       </mx:CheckBox>
                        </mx:Component>
            </mx:itemRenderer>
            </mx:DataGridColumn>
                       <mx:DataGridColumn dataField=amount headerText=Amount editable=true>
                         <mx:itemEditor>
                         <mx:Component>
                                  <mx:TextInput restrict=0-9/>
                         </mx:Component>
                         </mx:itemEditor>   
                       </mx:DataGridColumn>
            </mx:columns>
        </mx:DataGrid>
        <mx:CheckBox x=130 y=54 label=Checkbox selected=true click=Alert.show(abc.selected.toString()) id=abc/>
<mx:Script>
    <![CDATA[
        import mx.controls.CheckBox;
        import mx.collections.ArrayCollection;
        import mx.controls.Alert;
        public var dp:ArrayCollection = new ArrayCollection();
        public function addRow():void
        {
          var tmp:Object = new Object();
          tmp['amount'] = 100;
          tmp['date'] = new CheckBox();
          dp.addItem(tmp);
        }
        public function delRow():void
        {
            if(dgFee.selectedIndex != -1)
            dp.removeItemAt(dgFee.selectedIndex);
        }

        public function loop1():void
        {
            for(var i:int=0;i<dp.length;i++)
            {
               Alert.show(dp.getItemAt(i).date);
            }
        }
    ]]>
</mx:Script>
                <mx:Button x=29 y=89 label=AddRow click=addRow()/>
                <mx:Button x=107 y=89 label=DelRow click=delRow()/>
                <mx:Button x=184 y=89 label=CheckDg click=loop1()/>

</mx:Canvas>    
</mx:Application>
Veröffentlicht am 13/07/2009 um 18:13
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
0

Wenn Sie auf dem Kontrollkästchen in dem Raster, schreibt sie „wahr“ oder „falsch“ in das Datumsfeld, das ursprüngliche CheckBox-Objekt ersetzt, der dort war. Ich glaube, was itemEditors (Sie mit Ihrem als Redakteur Render) tun, ist sie die .data Eigenschaft von den jeweiligen Komponenten in die Sammlung zu schreiben.

Beantwortet am 13/07/2009 um 19:03
quelle vom benutzer

stimmen
3

Sie sind nicht zuweisen Objekte Datenvariablen, sondern Daten soll. Checkbox.select Eigenschaft wird zunächst auf Ihr Kontrollkästchen Objekt gesetzt und dann wahr oder falsch nach den vorangegangenen Aktionen. Versuchen Sie stattdessen

public function addRow():void
{
  var tmp:Object = new Object();
  tmp['amount'] = 100;
  tmp['date'] = false; // not new CheckBox();
  dp.addItem(tmp);
}

PS: Auch dp zugeschrieben werden sollte mit [Bindable] :-)

Beantwortet am 12/04/2010 um 16:27
quelle vom benutzer

stimmen
0

Stellen Sie die ‚editierbare‘ Eigenschaft für diese bestimmte Datagrid-Spalte als falsch. Dadurch wird das Problem beheben

Beantwortet am 25/10/2013 um 20:23
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more