Enhanced Search Widget Version 2.17 - 12/11/20

07-14-2014 03:57 PM
Labels (1)

Enhanced Search Widget Version 2.17 - 12/11/20

Live Preview Site

Web AppBuilder for ArcGIS | Help - Enhanced Search widget


List of the latest enhancements and changes:

  1. Fixed Issue with Print Legend using "override 1" for search and/or buffer Layers.
  2. Fixed autozoom issue under certain configurations.


Older enhancements or changes

Check the "Older enhancements or changes.txt" in the download for a complete list.


Older Versions

Last 2.13 version

Last 2.12 version

Last 2.11 version

Last 2.9 version

Last 2.7 version

Last 2.6 version

Last 2.5 version

Labels (1)

Robert Scheitlin, GISP​ got it all figured out, it was a matter of using symbology from config. The other glitch I presume was a misfigured expression. It works perfectly now, awesome!!

When I add my rest url to my map service the update search window gives me an error.



   the error is becacuse you have failed to identify which layer in the map service you wan to search on (ie. /MapService/0).

Oh geez, I did not realise the layers, thanks.

Hi Robert,

I saw only one question in your post:

Does the dropdown in your screen shot for the second and third expression value contain any text?

The dropdown contains a list of values but I select the first one with no value in both the second and third expression.

Does that answer your question?




   There is some miscommunication going on here. The drop down I am referencing is the one with the label "Get features in the layer that match  [drop down here]  of this and the preceding expression criteria".


Yes, I guess there is a miscommunication here and I still don't understand you....

I will try to put an application in a public place so you will be able to reproduce the problem.

I'll try to do it in few days because I'm very busy right now.




   Here is a image to try an explain better:



As always you're putting out fantastic content, so first of all thank you very much for all the hard work that you do.

My question is about domains and how they populate for end users.

I'm currently using the "Value" option in an expression to create a drop down menu for the end user (which comes from the domain of the feature class). This part works perfect, but always uses the first value in the domain as the default value. Is there any way to make this default to a "blank" value, for attributes that are not required to run a search?

This way a user would not have to go through and set multiple optional attributes to "blank" every time they wanted to search by only one or two of them.



   Currently I have to say no. But this is more of an oversight on my part and I will look at getting this fixed in a future release.


Thank you for the quick response. I just have one more question, relating to subtypes this time.

I have a feature class using Architectural Classification as a sub-type field. Each Architecture Class then has a sub-classification field, with a unique domain for each.

When I try to set up the search for the sub-classification field, its domain always comes back as that of the default subtype (both in formatting screen and on the user end). To remedy this, I attempted to create a Predefined list of all of the values of the sub-classifcation domains. This appears to work fine in the formatting of the widget, but upon trying the use the widget it seems that it is still being overrided by the default subtype domain.

I hope that made sense. If not I can use pictures to help show what I'm talking about.

Thank you again!

I'll tell you why, Robert Scheitlin, GISP​... it's because the field LOOKS like it is supposed to have something put in there. I've been doing this exact thing. Until today.

What I would recommend is in the part of the Widget where you wrote "Such as NAME like 'Roberts'" that you instead put 'Treat This Like A Definition Expression In An MXD' or something similar.

I figured it out today, and just stumbled across this post today.

Love the widget... still having issues creating that custom search like I want, but I'm digging...

Hi Robert,

I use the option ALL in these dropdowns because I want to use all the criterias that I select value for them in their ComboBox. Criterias that I don't select value in their ComboBox and they stay empty, I don't want to include in my query.

That gives a lot of flexibility because:

in query1 I want to ask about A and B and C so I select only values in ComboBox A, B ,C.

in query2 I want to ask about D and E  so I select only values in ComboBox D, E.

If I would have select the option ANY, it would have select A or B or C but I don't want that. I want A and B and C (without D and E).

Did I explain myself better now?

Thanks a lot,



   So here is how the widget works. When you add a second or more expression value the dropdown I am talking about should default to "All" which means the SQL statement will get "AND" concatenated in between the previous value expression and the one you are currently entering. If the field is not set to be required and no value is entered or selected for that expression value, then it will not get added to the SQL statement that is submitted to the server. If the field is required then the widget will force you to enter a value and/or will not provide a blank option in the dropdown.

So my question for you is: Is the widget NOT working for you in this manner and are you using the latest version?


   I am not sure I have tested your exact scenario. Is your map service public?

It really makes no sense that you have tried to configure the widget using predefined field values and when you use the widget it returns to the default sub type dropdown. I have not seen this.


   Thanks for the feedback. Sometimes I have to nudge people a little harder to read the widget help doc. So I have decided to change the placeholder for that input to "Optional (see widgets help for details)"

Hi Robert,

Your Enhanced Search Widget offers tremendous flexibility on how you can construct complex SQL queries by chaining together values from multiple items using the AND/OR operators.

The most common example is to locate a specific Section from a specific Township and specific Range.



The user can select from the 3 drop down User List values for Township, Range, and Section and easily locate the feature.


It is very easy to enter the User List values by editing the config_Enhanced Search.json file.


I can even add a null value in the User List by entering a comma at the beginning like so.

"userlist": ", 1,2,3,

This gives me the option to exclude the clause from the final SQL statement.

Everything works perfectly when I directly doctor this json file.

I had just one minor request.

When there are many items in the User List, I cannot get to the bottom of the page.

Would it be possible to include a scroll bar in the user interface?


Edit Expression for Section:


This is where it gets tricky to go to the bottom of the page.

I can see values from 1 through 10.

Without a scroll bar I cannot see the remaining values from 11 through 36.


Again, this is a minor issue. I can always doctor the config_Enhanced Search.json file and have it configured exactly the way I want.

Hi Robert,

Thanks so much for your work in creating the enhanced widgets it's really helping us move our organisations apps to Javascript without major pain!

First time poster here hoping you or someone will be able to help me..

Seems like a minor issue but I'm using the eSearch widget on a layer that I have defined labels for but the labels don't carry through to appear in the map after my query. Previously for flex I would have used the MapServer layer but for this eSearch you need to define the layer you're querying. I've tried using a dynamic layer and then defining labels in a webmap and saving it as a feature layer on AGOL, and when I take this layer and add it to another webmap the labels appear no worries, but when I use it in the enhanced query no luck with the labels?

Any thoughts anyone? I'd really appreciate any help!



   Suggestion added for



Previously for flex I would have used the MapServer layer but for this eSearch you need to define the layer you're querying.

As the developer of the Flex and WAB version I can say that you have always had to specify the layer of the map service, so I am a little confused by your statement.

Labels will not carry over to the eSearch results because I am using a FeatureLayer to display the results. You would have to have the dynamic map services added to your map (which allows for drawing labels) if you want the labels to show.


I agree that it makes no sense. I'm hoping I'm just doing something simple wrong someplace but I don't know what it would be. You can see below that I've created a very short predefined list, of just some of the values the list would need

However, once I have clicked through all of the ok buttons and look at it through the preview, what I see is is the domain for the first subtype, not the predefined list I created.

The map service is not public, but I'd be happy to give a temporary password via PM if you'd like to investigate for yourself.

Thank you!


   Well actually looking at the code the fact that you have defined a user list and it is ignored makes a lot of sense. In the code when I find a domain I stop and take the domain path in the code and do not continue to check if there is a userlist or unique vals defined. The fix is a simple one liner in code if you are interested, if not then I will have this fixed in the next release.


Thank you for looking into this for me. I'm glad it's a relatively easy thing to fix, and that it will be in the next release. In the meantime though I'd be happy to try and implement a fix myself if you don't mind passing some instructions along.

Thank you again!


   Open the SingleParameter.js file in an editor and at line 314 replace that line "if(codedValues){" with :

if(codedValues && !uvField && !userList){

and do it again on line 563 replace that line "if(codedValues){" with :

if(codedValues && !uvField && !userList){

Hi Robert,

Thanks a million for releasing so many updates to your Custom Widgets last Friday!

I decided to start with a clean slate and publish our PlanNet Web Application using the most recent versions of all your 9 Custom Widgets as of 10/23/2015.

Enhanced Search Widget version            10/15/2015

Enhanced Basemap Gallery Widget         10/23/2015

Google Street View Widget 1.2                      08/25/2015

Share Widget                                      09/04/2015

Identify Widget                                    10/23/2015    

Elevation Profile Widget 1.2                             08/25/2015

Map Progress Indicator Widget            10/23/2015

Enhanced Bookmark Widget                10/23/2015

Enhanced Locate Widget                     10/23/2015    

I also included these 3 custom widgets which I find very useful:

Add Service Widget 1.1.3                            06/19/2015

By: Damian Robinson

Add Shapefile Widget                                     09/18/2015

By: Dllamasgmtgis and Robert Scheitlin

Zoom Previous Next Widget 1.1.1                05/13/2015

By: Larry Stout

PlanNet – Foldable Theme



PlanNet – Launchpad Theme



PlanNet – Dart Theme



PlanNet – Tab Theme



PlanNet – Box Theme



PlanNet – Jewelry Box Theme



From all my preliminary testing this evening, this looks a like a solid release.

I will run through a more thorough set to tests on different Tablets and Smartphones over the next few days and report back my findings to you.

I am amazed at how all these powerful web apps can be created in one afternoon without having to write a single line of code!

What you have done for the Web AppBuilder community is pure magic.

Robert Scheitlin, GISP I'm trying to use this on a REST service that contains roughly 1 million records (police arrests) and I'm getting a massive lag with timeouts. Is there something I can do to minimize or remove these issues?

can you use a definition query in the query to limit the data that has to be evaluated?

if not it sounds to me like you should use arcmap instead.

web stuff is always subject to timeouts.

Unfortunately no. This is for basic (non-GIS trained) officers to use for analysis. Technically, I'm replacing an ancient, custom-coded, javascript web map from like 7-8 years ago. So if it worked before WAB then I'm dumbfounded on why WAB is hitting these timeouts.


   I fully agree with Glenn's comment. Web browsers only have access to limited memory resources and can not be compared to ArcMap. You need to limit the data with a definition query.

Hi Robert,

I am not sure if this may be a bug in the widget but when I try and access the unique values for a data layer that has many unique values present (i.e. over 100), in the 'Add Expression' dialogue the window just seems to spin on the 'Retrieving unique values' (see attached print screen). Have you encountered any other problems with this or is the number of unique values present a problem? Thanks!



   I have tested this with a map service with 79K records and 1K or greater unique values. Can you start a new thread https://community.esri.com/discussion/create.jspa?containerType=700&containerID=1294 and attach a screen shot of your browsers web console?

Feature Request

  1. Name : Value
    When entering list values (for the predefined expression values) it would be wonderful to be able to craft them for the GUI as well as the backend. Instead of just entering the value to search by, I would like to enter a "label" (if you will) AND a value. Then, when the database has an entry that is an acronym (like LOL) then I could enter a "Name" (or label) of "Laugh Out Loud" and have the value be "LOL" to make options simpler for the end users.
  2. Straight SQL : Field Value (Field Calculator)
    For those of us with a deeper understanding it would be AWESOME to be able to have a FIELD search. Where we pick a column from the REST Service, and the GUI pops up a FIELD with that name. Then be able to EDIT the section listed as "SQL STATEMENT" in most of the Expression Values. Then we could craft a SQL statement (like in Field Calculator) and present the user with our FIELD and some label text telling them what to enter and whatever they enter in that field is used in our customized SQL statement.
    While we're on this road... give us MULTIPLE fields... so we can construct some sweet queries and have the user pass on the values through their entries.


  1. Not something i am considering because you as a the GIS person can create a coded value domain for that field with names and values and the widget will use that coded value domain. The user predefined list is suppose to be simple data entry for predefined values.
  2. FYI, I am not interested in creating a widget that gives that level of complexity to the end user. I was against it in Flex and still am in WAB.


Is it possible to add a summary function for certain fields to the search results similar to your Flex Advanced Search widget? I looked through the help guide but didn't see anything. There is the Summary widget in WAB but this requires feature services and the user to open a separate widget.




   My sum function in eSearch for Flex was tied to the Datagrid that I developed to go with the eSearch. I will have to look into the level of effort of adding this to the WAB eSearch results and how to tie it in with the widgets UI as I do not have much control over the Attribute Table widget that I am using to display the search results in a grid format.


1. Sadly, as the GIS person I don't always own the data. As things stand, this is police data. I have zero control over it. The only people WITH control are not GIS-empowered and could care less. But I get it. Makes sense. I'll try to show how my OTHER maps look great while theirs has these non-human-readable entries because of a lack of domains and GIS-friendly data structure.

2. I totally get that. Makes sense. HOWEVER... I do think that a Field Calculator widget would be very nice to have. For those developers with more GIS background than Web.

Thanks for the response man. Love your products as always...


It'd be much appreciated. Thanks for looking into it as a possible enhancement!


Hi Robert,

I have a question? Maybe you have answer this already. Is there a way to configure and use my own symbology for individual search layers? I wish not to use the default symbology, very confusing for a user to quickly tell if the symbol return on the map a "hydrant" or "valve".


Ha T

ha Thach​ yes you can do this.  Just change it to "from Config" as below.

Then adjust the default Search symbology:

I had the very same question the first time I used this widget. I also prefer to use the default Search Symbology, and not from Server. Just like you, I want to have all my parcels highlight yellow for example, and all roads, red, etc...

Does this help?

Thanks, Robert.

I tried this approach. What I'm really after is be able to configure each search layer to use different search symbol. I was thinking of using my own symbol on the server instead of ArcGIS Server symbol. Is there an option to doing that?

ha Thach,

   No there is no option to configure symbology that is specific to one layer.

ha Thach​  Oh I see what you mean, one symbol for each layer. Interesting though. Ah such it is with such a powerful widget, we always have more ideas for Robert.

I would just recommend you adjust it on the MXD. Do you have access to it and can you do that?

Thanks Robert,

Will this be in your to do list for enhancement in future release?

Kevin - Thanks for the recommendation, yes I have done that. I thought that the same functionality transition over to WAB latest version of the eSearch widget as well.

This is how I configure in flexviewer with Robert search widget.

ha Tach,

   I forgot I had that ability in the Flex version. I will consider adding it to WAB.

Hi Robert,

I love the slick new interface you have introduce to the Enhanced Basemap Gallery at version

I like how you have visually divided the panel into 2 regions.

The active basemap is always shown on the top.

The remaining basemaps are shown in the bottom.



You can click on any basemap in the bottom region to select it.


The selected basemap now moves to the top and becomes the new active basemap.


When you hover over a basemap in the bottom region, a Plus Sign appears.


Clicking on the Plus Sign adds this to the top region and creates a mashup.

You can fade between the two basemaps.


Clicking on the red X on any basemap on the top region removes it from the mashup.


This takes you back to normal use.


This implementation is so simple, clean, and intuitive, that it does not need any help text.

I came across a minor issue with the GUI when you first add the Enhanced Basemap Widget.

The Configure Enhanced Basemap Gallery window comes up empty!

I was expecting to see the standard ESRI Basemap Gallery icons.


It is possible to click on the Add a New Basemap Button.

It brings up the Add Basemap Window.


I can enter:

Title = 2014 Aerials

URL = http://gis.mcassessor.maricopa.gov/ArcGIS/rest/services/Aerials2014/MapServer

However, nothing happens when I click on the image.


I can always edit the config_Enhanced Search.json file and enter the relative path to the thumbnail image file like so:

"thumbnailUrl": "images/2014_Aerials.jpg",


Everything works fine when I manually copy 2014_Aerials.jpg to the images folder under eBasemapGallery.




   Can you show me what the browsers web console says when the you open the widget config UI and no items appear?



Let me take a screenshot and post it...

i see this too with the light gray canvas.

i just pasted in a new image.

i am just using the esri basemap widget, so i doubt it has anything to do with Robert's code.

Hi Robert,

I decided to start from scratch by just adding your eBasemapGallery:


Create a New App using the Default 2D theme


Add an In-Panel Widget


Select Enhanced Basemap


The Configure Enhanced Gallery comes up empty.


Screenshot from Fidder.


Request/Response Headers


Screenshot from Firebug Console


Retry to Add Enhanced Basemap Widget

Screenshot from Fiddler


Version history
Revision #:
4 of 4
Last update:
‎12-22-2020 09:34 AM
Updated by: