I have a layer of Streets that has a number of Null Values in the Street Name field. I also have the list sorted ascending AC that shows all the blank Street Names First. Where in the code can you remove these values from the list?
I have a layer of Streets that has a number of Null Values in the Street Name field. I also have the list sorted ascending AC that shows all the blank Street Names First. Where in the code can you remove these values from the list?
You can apply a filter function the the ArrayCollection to do that. There are tons of examples describing how to do that if the search the internet (e.g. flex arraycollection filterfunction).
Here is the latest version of my code. No Errors, but it still produces Empty Fields
//create queryrresults private function createQueryResults(featureSet:FeatureSet):ArrayCollection { graphicsLayer.clear();
var result:ArrayCollection = new ArrayCollection; result.filterFunction = function(queryResult:*):Boolean{ return (StringUtil.trim(queryResult.name)!=""); // } result.refresh(); if (!queryTitleField) { queryTitleField = featureSet.displayFieldName; }
for each (var graphic:Graphic in featureSet.features) { var value:String = ""; var title:String = ""; var content:String = ""; var link:String = "";
if (allFields) { if (featureSet.fields) // requires ArcGIS Server 10.0+ { for each (var field:Field in featureSet.fields) { if (field.name in graphic.attributes) { displayFields(field.name, getFieldXML(field.name), field); } } } else { for (var fieldName:String in graphic.attributes) { displayFields(fieldName, getFieldXML(fieldName), null); } } } else { for each (var fieldXML:XML in fields) // display the fields in the same order as specified { if (fieldXML.@name[0] in graphic.attributes) { displayFields(fieldXML.@name[0], fieldXML, getField(fieldXML.@name[0], featureSet)); } } }
function displayFields(fieldName:String, fieldXML:XML, field:Field):void { value = graphic.attributes[fieldName] ? String(graphic.attributes[fieldName]) : "";
if (value) { var isDateField:Boolean; var dateFormat:String; if (fieldXML) { dateFormat = fieldXML.@dateformat[0]; if (dateFormat) { isDateField = true; } } if (!isDateField && field) { isDateField = field.type == Field.TYPE_DATE; } if (isDateField) { var dateMS:Number = Number(value); if (!isNaN(dateMS)) { value = msToDate(dateMS, dateFormat); } } }
if (fieldName.toUpperCase() == queryTitleField.toUpperCase()) { title = value; if (!title) { title = widgetTitle; } } else if (fieldName.toUpperCase() == queryLinkField.toUpperCase()) { link = value; } else if (fieldName.toUpperCase() != "SHAPE_LENGTH" && fieldName.toUpperCase() != "SHAPE_AREA") { if (fieldXML && fieldXML.@alias[0]) { content += fieldXML.@alias[0]; } else { content += featureSet.fieldAliases[fieldName]; } content += ": " + value + "\n"; } } graphic.addEventListener(MouseEvent.CLICK, mouseClickGraphic);
var queryResult:QueryResult = new QueryResult(); queryResult.title = title; queryResult.content = content; queryResult.point = getGeomCenter(graphic); queryResult.link = link ? link : null; queryResult.geometry = graphic.geometry;
switch (graphic.geometry.type) { case Geometry.POLYLINE: { graphic.symbol = queryResult.symbol = resultLineSymbol; break; } case Geometry.POLYGON: { graphic.symbol = queryResult.symbol = resultFillSymbol; break; } case Geometry.MAPPOINT: { graphic.symbol = queryResult.symbol = resultMarkerSymbol; break; } } graphic.attributes = queryResult; if (queryResult.point && !isNaN(queryResult.point.x) && !isNaN(queryResult.point.y)) // make sure it is a valid point { result.addItem(queryResult); graphicsLayer.add(graphic); } } return result; }
private function getFieldXML(fieldName:String):XML { var result:XML;
for each (var fieldXML:XML in fields) { if (fieldName == fieldXML.@name[0]) { result = fieldXML; break; } }
return result; }
private function getField(fieldName:String, featureSet:FeatureSet):Field { var result:Field;
for each (var field:Field in featureSet.fields) { if (fieldName == field.name) { result = field; break; } }
return result; }
// sort field function- added by Dkirkley April 13, 2011 private function SortDataGridData(strFieldNameToSort:String,recACToSort:ArrayCollection):ArrayCollection{ try{ // CC -Orginal code by BJ and found at forum post http://forums.esri.com/Thread.asp?c=158&f=2421&t=285419&mc=6#msgid886159 var dataSortField:SortField = new SortField(); dataSortField.name=strFieldNameToSort; var alphabetDataSort:Sort = new Sort(); alphabetDataSort.fields=[dataSortField]; recACToSort.sort=alphabetDataSort; recACToSort.refresh(); } catch(error:Error){ } return recACToSort; }