¿Como puedo hacer para que al hacer clic en el Calendario que muestra el componente DateField, ejecute el evento itemEditEnd?
Mi codigo es el siguiente:
[code]
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%" applicationComplete="initGrid();">
<mx:Script>
<![CDATA[
import mx.controls.listClasses.IListItemRenderer;
import mx.controls.DateField;
import mx.controls.Alert;
import mx.controls.DateChooser;
import mx.collections.SortField;
import mx.collections.Sort;
import mx.collections.HierarchicalData;
//import mx.rpc.http.HTTPService;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.events.AdvancedDataGridEvent;
import mx.events.AdvancedDataGridEventReason;
import mx.controls.listClasses.IDropInListItemRenderer;
import mx.controls.listClasses.IListItemRenderer
import mx.core.IDataRenderer;
[Bindable]
private var ajaxHierarchical:HierarchicalData;
public function ajaxHandler(event:ResultEvent):void{
if( event.result != '' ){
ajaxHierarchical = new HierarchicalData(event.result.task);
adgTask.dataProvider = ajaxHierarchical;
}
}
public function ajaxFault(event:FaultEvent):void{
Alert.show( event.fault.faultString, "Error" );
}
//Mostrar el DateChoose
public function sendModify(event:AdvancedDataGridEvent):void{
//try{
if( event.reason == 'cancelled' || event.reason == null ){
return;
}
if( event.reason != null ){
var colName:String = adgTask.columns[event.columnIndex].dataField;
var TaskId:String = adgTask.selectedItem['@TASK_ID'];
var params:Object = {};
var ajaxSave:HTTPService = new HTTPService();
//event.currentTarget.selectedItem.TASK_ID.toString()
switch(colName){
case '@TASK_RESUME':{
if( event.currentTarget.itemEditorInstance.text != '' || event.currentTarget.itemEditorInstance.text.length < 255 ){
if( event.currentTarget.itemEditorInstance.text != adgTask.selectedItem[colName] ){
params['step'] = 'mytaskbyproject_save';
params['type'] = 'text';
params['id'] = TaskId;
params['TASK_RESUME'] = event.currentTarget.itemEditorInstance.text;
ajaxSave.resultFormat = 'text';
ajaxSave.method = 'POST';
ajaxSave.useProxy = false;
ajaxSave.addEventListener(ResultEvent.RESULT, processResult);
ajaxSave.url = 'http://localhost/administradorProyectos/ajax.asp';
ajaxSave.send(params);
}
}
break;}
case '@DATE_EXPECTED_START_TASK':
case '@DATE_EXPECTED_END_TASK':
case '@DATE_TASK_PROYECTED':
case '@DATE_TASK_MODIFIED':{
if( event.currentTarget.itemEditorInstance.text != '' || event.currentTarget.itemEditorInstance.text != null ){
if( event.currentTarget.itemEditorInstance.text != adgTask.selectedItem[colName] ){
var day:String = event.currentTarget.itemEditorInstance.text.substr(0, 2);
var month:String = event.currentTarget.itemEditorInstance.text.substr(3, 2);
var year:String = event.currentTarget.itemEditorInstance.text.substr(6, 4);
params['step'] = 'mytaskbyproject_save';
params['type'] = 'date';
params['id'] = TaskId;
params['field'] = colName;
params['celname'] = year+month+day;
ajaxSave.resultFormat = 'text';
ajaxSave.method = 'POST';
ajaxSave.useProxy = false;
ajaxSave.addEventListener(ResultEvent.RESULT, processResult);
ajaxSave.url = 'http://localhost/administradorProyectos/ajax.asp';
ajaxSave.send(params);
}
}
break;}
}
}
/*}catch(error:Error){
Alert.show(error.message);
}*/
}
// The result processing function
protected function processResult(response:ResultEvent):void{
if(response.result.toString() != 'La información fue almacenada correctamente.'){
Alert.show( response.result.toString() );
}
}
public function initGrid():void {
this.ajaxData.send();
}
]]>
</mx:Script>
<mx:HTTPService result="ajaxHandler(event);" fault="ajaxFault(event);" id="ajaxData" resultFormat="e4x" url="http://vreventones/administradorProyectos/ajax.asp" useProxy="false" method="GET">
<mx:request xmlns="">
<step>mytaskbyproject</step>
<projectid>343</projectid>
</mx:request>
</mx:HTTPService>
<mx:AdvancedDataGrid id="adgTask" width="100%" height="100%" editable="true" selectionMode="singleRow" treeColumn="{No}" x="0" y="0"
themeColor="#3D84CC" itemEditEnd="sendModify(event);">
<mx:columns>
<mx:AdvancedDataGridColumn headerText="Tarea Id" id="TASK_ID" dataField="@TASK_ID" visible="false"/>
<mx:AdvancedDataGridColumn headerText="No" dataField="@TASK_NUMBER" id="No" editable="false"/>
<mx:AdvancedDataGridColumn headerText="Resumen" dataField="@TASK_RESUME" />
<mx:AdvancedDataGridColumn headerText="Comienzo" dataField="@DATE_EXPECTED_START_TASK" itemEditor="DateEditor" editorDataField="text"
textAlign="center" width="100"/>
<mx:AdvancedDataGridColumn headerText="Objetivo" dataField="@DATE_EXPECTED_END_TASK" itemEditor="DateEditor" editorDataField="text"
textAlign="center" width="100"/>
<mx:AdvancedDataGridColumn headerText="Proyectada" dataField="@DATE_TASK_PROYECTED" itemEditor="DateEditor" editorDataField="text"
textAlign="center" width="100"/>
<mx:AdvancedDataGridColumn headerText="Real" dataField="@DATE_TASK_MODIFIED" itemEditor="DateEditor" editorDataField="text"
textAlign="center" width="100"/>
<mx:AdvancedDataGridColumn headerText="Cumplimiento" dataField="@COMPLIANCE" textAlign="center" width="100" editable="false"/>
</mx:columns>
</mx:AdvancedDataGrid>
</mx:Application>
[/code]
y el codigo de DateEditor es:
[code]
<mx:DateField xmlns:mx="http://www.adobe.com/2006/mxml" dayNames="['D', 'L', 'M', 'M', 'J', 'V', 'S']" formatString="DD/MM/YYYY" yearNavigationEnabled="true"
monthNames="['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre']"
implements="mx.controls.listClasses.IListItemRenderer" focusIn="open()" change="dateChanged(event);">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.CalendarLayoutChangeEvent;
import mx.events.AdvancedDataGridEvent;
import mx.controls.AdvancedDataGrid;
override public function set data(value:Object):void{
if(listData){
var newDate:Date;
if (value is String){
newDate = new Date(Date.parse(value as String));
selectedDate = newDate;
super.data=newDate;
}else if (value is Date){
super.data=value as Date;
}
}
}
// Event handler for the DateField change event.
private function dateChanged(e:Event):void {
//mx.controls.Alert.show( e.target.toString() + e.type + e.currentTarget.selectedDate );
//adgTask.itemEditorInstance.text;
}
]]>
</mx:Script>
</mx:DateField>
[/code]
Gracias de antemano.
