Flex CheckBox v DataGrid

hlasů
3
V followin flex Code: 
Také prohlížet: http://www.cse.epicenterlabs.com/checkBoxDg/checkBoxDg.html
1. Přidejte řádek v DataGrid po kliknutí na „AddRow“
2. Klikněte na „CheckDg“ vidět hodnoty všech políček
     - ukazuje „checkBox57“ nebo „checkBox64“ nebo nějaké podobné řetězce
3. Nyní, „select“ zaškrtávací políčko v první řadě.
4. Klikněte opět na „CheckDg“
    -je show true

Takže nejprve dp.getItemAt (i) .datum vrací CheckBox
a později se vrátí na „vybrané“ hodnotu CheckBox?
Proč se tento rozdíl?
<?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>
Položena 13/07/2009 v 18:13
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
0

Když klepnete na políčko v mřížce, zapíše „true“ nebo „false“ do pole datum, který nahradil původní CheckBox objekt, který tam byl. Věřím, že to, co itemEditors (používáte render jako redaktor) udělat, je, že napsat .DATA vlastnost z příslušných složek do sbírky.

Odpovězeno 13/07/2009 v 19:03
zdroj uživatelem

hlasů
3

Nejste měl přiřadit objekty k datové proměnné, ale data. Checkbox.select vlastnost je nastavena na zaškrtnutí políčka předmět a pak pravdivý nebo nepravdivý po předchozích akcích. Zkuste místo toho

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

PS: Také dp je třeba připsat s [Bindable] :-)

Odpovězeno 12/04/2010 v 16:27
zdroj uživatelem

hlasů
0

Nastavte ‚upravitelné‘ vlastnost pro danou DataGrid sloupce jako nepravdivé. To vyřeší problém

Odpovězeno 25/10/2013 v 20:23
zdroj uživatelem

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