Hi there,
I would like to apply a Date Formatter to a datagrid because the dates are currently displaying values such as 1312197042000. Any ideas what is going wrong here? I'm trying to incorporate R. Scheitlin's date formatting function in a query widget here. Thanks:confused:
private function setDataGrid (featureLayer:FeatureLayer):void {
var iTargetLayer:int;
for (var i:int = 0; i< selectionLayers.length; i++)
{
if (selectionLayers.label == featureLayer.name)
{
iTargetLayer = i;
break;
}
}
targetLayer = selectionLayers[iTargetLayer].layer;
var arrFields:Array;
arrFields = selectionLayers[iTargetLayer].fields;
var dgColumns:Array = [];
for (var icount:int = 0; icount< arrFields.length; icount++)
{
var fld:Field = arrFields[icount];
var dgColumn:DataGridColumn = new DataGridColum();
dgColumn.headerText = fld.alias;
//If date field, format date
if (fld.type == "esriFieldTypeDate")
{
dgColumn.labelFunction = getDateLbl;
}
else
{
dgColumn.labelFunction = labelOf(fld.name);
}
dgColumn.sortCompareFunction = sortOf(fld.name);
dgColumns.push(dgColumn);
}
dg.columns = dgColumns;
var fs:FeatureSet = new FeatureSet(featureLayer.selectedFeatures);
dg.dataProvider = fs.attributes;
}
private function labelOf(fullfieldname:String):Function {
return function (item:Object, column:DataGridColumn):String{
return item[fullfieldname];
};
}
private function getDateLbl(item:Object,column:DataGridColumn):String {
var dateMS:Number = Number(item[column.dataField]);
var retVal:String = "";
var rVal:String = item[column.dataField];
if(rVal == null)
{
//**rVal is returning null because this code runs
// and populates the field with 00/01/NaN values-?? retVal = msToDate(dateMS, "MM/DD/YYYY");
}else{
if (!isNaN(dateMS))
{
retVal = msToDate(dateMS, "MM/DD/YYYY");
}
}
return retVal;
}
private function msToDate(ms:Number, dateFormat:String):String {
var date:Date = new Date(ms);
if (date.milliseconds == 999) // workaround for REST bug
{
date.milliseconds++;
}
if (dateFormat)
{
dateFormatter.formatString = dateFormat;
var result:String = dateFormatter.format(date);
if (result)
{
return result;
}
else
{
return dateFormatter.error;
}
}
else
{
return date.toLocaleString();
}
}