Unfortunately, you are correct, there is no way to do this except by hitting it over the head. But your proposed solution is interesting -- if it worked at all, I suspect fetch would populate two drop-down/select lists, rather than 1. (I've tried this, but actually doing two fetches -- very wasteful.) But then, you wouldn't have to iterate through the entire list, just set the selected index for the second (value) list, not writeable by the user (hidden?), to the index just selected by the user for the f
Here's a thought which may work, what if you created a matching hidden dictionary which would have the the values you wanted. Then when the user selects from the list of display values the customer understands from the visible dictionary you are populating, you have the hidden dictionary (via ISF) select the actual value you want which matches the selection chosen by the customer. This way you have the values stored in the database via this hidden dictionary.
Here is the solution I came up with to work around this issue.
The fetch data callback returns an array that is created with code that looks like the following. You can view it by turning on isfDebug=true and viewing the source of the popup fetch page showing query results. Note you can also access the row count and the parameter list passed into the query.
var retArray = new Array(); retArray['Q2005._COUNT_'] = 1;