That function in itself should work just fine, however you want to keep these things in mind:
1. Make sure that the object is definitely being registered with the page's ScriptManager as an AsyncPostBackControl.
2. __doPostBack() works with an ASP control's Name attribute versus it's ID attribute. So if your button's name is certainly "btnSearch" and doesn't have any additional naming container names added to it, then your function should work as-is. However, if your button's rendered control ID is something like "ctl00_Content_btnSearch", you would have to make sure the __doPostBack function has the button name formatted as "ctl00$Content$btnSearch".