Flex avmerkingsbokser i Datagrid

stemmer
3
I followin flex-kode: 
Også synlig på: http://www.cse.epicenterlabs.com/checkBoxDg/checkBoxDg.html
1. Legg en rad i Datagrid ved å klikke på AddRow
2. Klikk på CheckDg for å se verdiene av alle boksene
     - det viser checkBox57 eller checkBox64 eller noe lignende streng
3. Nå, velg avmerkingsboksen i den første raden.
4. Klikk igjen på CheckDg
    -Det show true

Så, i utgangspunktet dp.getItemAt (i) .date returnerer en avkrysnings
og senere returnerer den valgt verdien av avmerkingsbokser?
Hvorfor denne forskjellen?
<?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>
Publisert på 13/07/2009 klokken 17:13
kilden bruker
På andre språk...                            


3 svar

stemmer
0

Når du klikker på boksen i nettet, skriver det "true" eller "false" i datofeltet, og erstatte den opprinnelige avmerkingsbokser objekt som var der. Jeg tror det itemEditors (du bruker gjengi som redaktør) gjør er at de skrive .data eiendommen fra de respektive komponenter i samlingen.

Svarte 13/07/2009 kl. 18:03
kilden bruker

stemmer
3

Du er ikke ment å tildele objekter til datavariabler, men data. Checkbox.select eiendommen er satt til boksen objekt først og så sant eller usant etter de foregående handlinger. Prøv dette i stedet

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

PS: Også dp bør tilskrives med [bind] :-)

Svarte 12/04/2010 kl. 15:27
kilden bruker

stemmer
0

Sett 'redigerbart' eiendom for den aktuelle Datagrid kolonnen som falske. Dette vil løse problemet

Svarte 25/10/2013 kl. 19:23
kilden bruker

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