Now, I can avoid this using a update panel.. but the button and grid should be in the same Div of update panel. For me, the button is somewhere else in the page... and the grid is somewhere in the bottom.
Not a problem!
<script type="text/javascript">
function click(id) {
var btn = document.getElementById(id);
btn.click();
}
</script>
<asp:Button id="btnToClick" runat="server" Text="Click me!"
OnClientClick="javascript:click('<%=btnThatLoads.ClientId %>');return false" />
<asp:UpdatePanel id="upnl" runat="server">
<ContentTemplate>
//Your grid goes here
<asp:Button id="btnThatLoads" runat="server"
onclick="loadGrid" style="display: hidden;" />
</ContentTemplate>
</asp:UpdatePanel>
And there you have it - a button in one part of the page triggering an async-postback in an Update Panel in a different part of the page.