Hi. I asked around and no one had any bright ideas. However, I did come up with something is a huge hack and that relies on leveraging the underlying technology of how controls do autopostback. Let me say again that this is quite a hack and would never be formally supported or guaranteed to work after upgrades.
So that said, it seems that you can try doing the following. In the client script for doing all the auto-select magic, find the idle() function and add the following line:
function idle(){
// This function is called if the timeout expires. If this is the third (by default) time that the
// idle function has been called, it stops the timer and clears the keyboard buffer
timeoutCtr += 1
if(timeoutCtr > timeoutCtrLimit){
resetToFind();
timeoutCtr = 0;
window.clearInterval(timeoutID);
}
__doPostBack(oControl.id, "");
}Not to belabor something you already know, but what this does is hard-code a call to the javascript function that ASP.NET generates to support autopostback. What's happening here is that when the idle timeout expires, the script not only sets the selection in the listbox (and, as we know,
not firing onchange), but then posting
as if onchange had fired.
(The reason I say that this wouldn't be a supported technique is that the team has not, as far as I know, documented this _doPostBack() function, hence probably would not feel obligated to support someone hijacking it as I'm showing here.)
This will only work if AutoPostBack is set to true for the control, otherwise there is no __doPostBack function rendered into the page.
You might want to play around a little with the idle timeout time and such -- it can be a little quick on the draw if you spend too much time reading the items after typing characters in.
Let me know if this works. And remember that this is not a supported solution ... :-)