You should not rebind on every Page_Load. You should check whether the request is postback, and only if it is initial page load, databind and set a DataSource.

Client side filtering and LoadOnDemand are not compatible. Client-side filtering only filters on the client, while load on demand does an AJAX request to fetch more data from the server.

Moreover, client filtering will load and create all items at once on the client.

I would suggest using Server filtering with LoadOnDemand=True, and a reasonable PageSize setting. If you only set EnableAutoFiltering="Server", you do not need any code in the code behind. You can also use the paging functionality. Both paging and load on demand work fine with server-side filtering.

What is your current value for PageSize ? If it is zero, all items will be loaded anyway.

I've decided to use the WebCombo as it is giving good performance and a reasonable TypeAhead for our data. Overall it seems easier to use. I will experiment a little more with the WebDropDown when I get some time.