I have been choking with this problem for entire days without advancing.
Update contents of a panel, AsyncPostBackTrigger if the caller is outside updatePanel. If you want to redirect, you add it as PostBackTrigger.
Both things on updatepanel using:
<asp:UpdatePanel ID="myUpdatePanel" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:LinkButton ID="link" runat="server" OnClick="link_Click"/>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="link" />
</Triggers>
</asp:UpdatePanel>
My issue had to do with the controls being generated dinamically inside a custom control due a listview.
The solution:
ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(myRedirectButton);
In my case, i was using a listview on the item data bound, so i got the control using:
Control myRedirectButton = ListViewDataItem.GetControl("controlId")
Keep in mind the diference between Async and not ones. It was the main point that i didnt notice it until very far.