Select to view content in your preferred language

Apply Date Formatter to dynamically rendered datagrid

1932
2
10-13-2011 07:35 AM
KateLyndegaard
Deactivated User
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();
}
}
Tags (2)
0 Kudos
2 Replies
DanMcCoy
Frequent Contributor
Kate,

Did you find a solution.  I just upgraded to ArcGIS Server 10 SP3 from 9.3.1 and noticed the dates coming in as integers....

Thanks,

Dan
0 Kudos
DanMcCoy
Frequent Contributor
0 Kudos