Select to view content in your preferred language

Remove Null Values from Query Widget Dropdown

733
2
04-20-2011 09:53 AM
DaveKirkley
Occasional Contributor
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?
Tags (2)
0 Kudos
2 Replies
by Anonymous User
Not applicable
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).
0 Kudos
DaveKirkley
Occasional Contributor
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;
   }
0 Kudos