ScorpionGT
24-06-2010, 14:24
Ciao a tutti, ho un problema con Flex: se in una colonna di un DataGrid inserisco un DateField (in modo che l'utente possa scegliere comodamente la data da inserire), mi si presenta un fastidioso problema. In pratica se nel datefield uso oggetti di tipo Date, tutto funziona a dovere, ma se inserisco le date come oggetti String (quello che serve a me) tutto funziona a dovere eccetto una cosa: se l'utente clicca un campo per cambiare la data, al click il campo viene svuotato. Questo comportamento con oggetti di tipo Date non accade, solo con le stringhe. Per il resto funziona tutto come dovrebbe. Non c'è un modo per non far cancellare la data già esistente al click dell'utente?
Qui di seguito vi allego un codice di esempio che mostra il problema: nell'esempio c'è un datagrid con due colonne con DateField: una gestisce oggetti di tipo Date e l'altra oggetti di tipo String. L'unica differenza a livello di interfaccia fra queste due colonne è appunto il fatto che se si clicca in un campo della colonna con oggetti String, il contenuto preesistente viene svuotato, al contrario di quella con oggetti Date.
Grazie :)
Ciao!
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.collections.ArrayCollection;
[Bindable] private var DGArray:Array = [
{Artist:'Pavement', Album:'Slanted and Enchanted', Price:11.99, Data:new Date(2004,10,30), DataString:'2004-10-30'},
{Artist:'Pavement', Album:'Brighten the Corners', Price:11.99, Data:new Date(2005,3,2), DataString:'2005-3-2'}];
[Bindable] private var initDG:ArrayCollection;
public function initData():void {
initDG=new ArrayCollection(DGArray);
}
]]>
</mx:Script>
<mx:DataGrid id="myGrid" width="350" height="200"
dataProvider="{initDG}" creationComplete="{initData()}" editable="true">
<mx:columns>
<mx:DataGridColumn dataField="Album" />
<mx:DataGridColumn dataField="Price" />
<mx:DataGridColumn dataField="Data" rendererIsEditor="true" editorDataField="selectedDate">
<mx:itemRenderer>
<mx:Component>
<mx:DateField formatString="YYYY-MM-DD">
</mx:DateField>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn dataField="DataString">
<mx:itemEditor>
<mx:Component>
<mx:DateField formatString="YYYY-MM-DD">
</mx:DateField>
</mx:Component>
</mx:itemEditor>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
<mx:Button label="Button"/>
</mx:Application>
Qui di seguito vi allego un codice di esempio che mostra il problema: nell'esempio c'è un datagrid con due colonne con DateField: una gestisce oggetti di tipo Date e l'altra oggetti di tipo String. L'unica differenza a livello di interfaccia fra queste due colonne è appunto il fatto che se si clicca in un campo della colonna con oggetti String, il contenuto preesistente viene svuotato, al contrario di quella con oggetti Date.
Grazie :)
Ciao!
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.collections.ArrayCollection;
[Bindable] private var DGArray:Array = [
{Artist:'Pavement', Album:'Slanted and Enchanted', Price:11.99, Data:new Date(2004,10,30), DataString:'2004-10-30'},
{Artist:'Pavement', Album:'Brighten the Corners', Price:11.99, Data:new Date(2005,3,2), DataString:'2005-3-2'}];
[Bindable] private var initDG:ArrayCollection;
public function initData():void {
initDG=new ArrayCollection(DGArray);
}
]]>
</mx:Script>
<mx:DataGrid id="myGrid" width="350" height="200"
dataProvider="{initDG}" creationComplete="{initData()}" editable="true">
<mx:columns>
<mx:DataGridColumn dataField="Album" />
<mx:DataGridColumn dataField="Price" />
<mx:DataGridColumn dataField="Data" rendererIsEditor="true" editorDataField="selectedDate">
<mx:itemRenderer>
<mx:Component>
<mx:DateField formatString="YYYY-MM-DD">
</mx:DateField>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn dataField="DataString">
<mx:itemEditor>
<mx:Component>
<mx:DateField formatString="YYYY-MM-DD">
</mx:DateField>
</mx:Component>
</mx:itemEditor>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
<mx:Button label="Button"/>
</mx:Application>