Вы столкнулись с проблемами, потому что содержимое Panel1 не отображается при первом отображении страницы. Это приводит к тому, что UpdatePanel2 не инициализируется должным образом.
(Менеджер запросов страниц, который управляет всеми частичными обновлениями, должен знать о существовании UpdatePanel2, и этого просто не произойдет, если он не отображается. Кроме того, если вы думаете об этом, панель обновлений должна отображаться некоторые элементы, если только добавить местозаполнитель div, в который он будет вставлять свое содержимое при частичной обратной передаче).
Я не знаю точно, чего вы пытаетесь достичь, но, если вы просто хотите, чтобы ваша UpdatePanel2 запускалась элементом управления, который не находится внутри панели обновления, тогда установите LinkButton1 в качестве триггера, например, так.
<script runat="server">
protected void LinkButton1_Click(object sender, EventArgs e)
{
blabla.Visible = true;
}
</script>
<asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Debug">
</asp:ScriptManager>
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click" Text="Show Panel"></asp:LinkButton>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" >
<Triggers>
<asp:AsyncPostBackTrigger ControlID="LinkButton1" />
</Triggers>
<ContentTemplate>
<asp:PlaceHolder runat="server" ID="blabla" Visible="false">
blah bla blah
</asp:PlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>
Если LinkButton1 действительно должен быть внутри панели обновления (возможно, LinkButton1 не всегда виден?), То вы можете сделать что-то вроде следующего
<script runat="server">
protected void LinkButton1_Click(object sender, EventArgs e)
{
blabla.Visible = true;
UpdatePanel2.Update();
}
</script>
<asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Debug">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" >
<ContentTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click" Text="Show Panel"></asp:LinkButton>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional" >
<Triggers>
<asp:AsyncPostBackTrigger ControlID="LinkButton1" />
</Triggers>
<ContentTemplate>
<asp:PlaceHolder runat="server" ID="blabla" Visible="false">
blah bla blah
</asp:PlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>