why dont you use update panel?
using update panel you can easily set the loading image until your call comes back.
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:UpdateProgress ID="UpdateProgress11" runat="server" DisplayAfter="0" AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>
<asp:Image ID="Image11" runat="server" ImageUrl="~/Images/etls/preloader.gif" />
</ProgressTemplate>
</asp:UpdateProgress>
<table border="0">
<tr>
<td>
Your content here, with the button.
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>