【发布时间】:2009-01-15 19:14:07
【问题描述】:
我正在使用支持 ASP.NET AJAX 的 Web 应用程序(ASP.NET 2.0 和 AJAX Toolkit 1.0) 包含一个按钮和 2 个 UpdatePanel(UpdatePanel_1 和 UpdatePanel_2)
按钮在 ScriptManager 对象中使用 RegisterAsyncPostBackControl 注册 UpdatePanel_1 处于“条件”更新模式并包含一个文本框。
UpdatePanel_2 处于“始终”更新模式并包含另一个文本框
当按钮被按下时,它的处理程序调用 UpdatePanel_1.Update() 根据列表中随机选择的值更新 TextBox 的值; 此外,UpdatePanel_2 的 TextBox 正在自动更新,也无需刷新页面
基于布尔 ViewState 变量的值,我还想隐藏/显示 UpdatePanels,但是 我得到错误:
“Sys.InvalidOperationException:找不到 ID 为“UpdatePanel_2”(或 UpdatePanel_1)的 UpdatePanel。
如果它是动态更新的,那么它必须在另一个 UpdatePanel 中"
如何在不添加额外的包装 UpdatePanel 的情况下完成?
protected void Page_Load(object sender, EventArgs e)
{
ScriptManager1.RegisterAsyncPostBackControl(Button1);
if (!IsPostBack)
{
Visibility = true;
}
UpdatePanel_1.Visible = !Visibility;
UpdatePanel_2.Visible = Visibility;
Visibility = !Visibility;
}
protected void Button1_Click(object sender, EventArgs e)
{
if (Panel1.Visible)
UpdatePanel_1.Update();
}
protected bool Visibility
{
get
{
return (bool)(ViewState["Visibility"] ?? true);
}
set
{
ViewState["Visibility"] = value;
}
}
【问题讨论】: