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>