MasterPage + Content page с UpdatePanel

levik
Дата: 19.04.2007 11:37:44
Всем привет,

 

Помогите, плиз, с проблемкой...

Дано:


  • MasterPage с невидимым Label

  • Content page с ListBox-ом и кнопкой

Задача: когда юзер кликает кнопку, что-то происходит с ListBox-ом (сейчас неважно, что именно - не в этом проблема) и Label в MasterPage-е становится видимым.

До сих пор - все работает OK, но если в Content page добавляю UpdatePanel,

Label остается невидимым.

Мне понятно, что такое поведение характерно для приложений, использующих Ajax, но тем не менее - как это решить?

 
MasterPage:
 

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="TestMasterPage.master.cs" Inherits="TestMasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>
<asp:Label ID="Label1" runat="server" Text="Error!" Visible="False"/>
</form>
</body>
</html>

 
 
Content page:
<%@ Page Language="C#" MasterPageFile="~/TestMasterPage.master" AutoEventWireup="true" CodeFile="TestContentPage.aspx.cs" Inherits="TestContentPage" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:ListBox ID="ListBox1" runat="server">
<asp:ListItem Value="1">Item 1</asp:ListItem>
<asp:ListItem Value="2">Item 2</asp:ListItem>
<asp:ListItem Value="3">Item 3</asp:ListItem>
<asp:ListItem Value="4">Item 4</asp:ListItem>
</asp:ListBox>
<br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>


 
Content page code behind:
protected void Button1_Click(object sender, EventArgs e)
{
//Do something...
//...
Label lbl = (Label)Page.Master.FindControl("Label1");
if (lbl != null)
lbl.Visible = true;
}

enot
Дата: 19.04.2007 15:21:59
Думаю потому, что у тебя label не находится в UpdatePanel. Это ж Ajax, обновляется лишь то, что находится в UpdatePanel.
кто сказал, что будет легко?)))
levik
Дата: 19.04.2007 16:05:00
Помогло!

Огромное спасибо, enot!!!