【问题标题】:Hide/Show controls with AJAX使用 AJAX 隐藏/显示控件
【发布时间】: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;
    }
}

【问题讨论】:

    标签: asp.net ajax


    【解决方案1】:

    问题是不可见的控件没有呈现给客户端。因此,试图让它们可见是行不通的,因为就客户而言,它们不存在。

    尝试使用 style="display:none",或者对可见和不可见面板使用不同的 CSS 类和样式,而不是设置 visible=false;

    【讨论】:

      【解决方案2】:

      你可以不可见,或者可见控件是updatepanel的子级,不是不可见,可见updatepanel,我尝试使用updatemode = conditional but error,然后我将可见控件添加到updatepanel。希望能帮到你 谢谢大家发帖

      【讨论】:

        猜你喜欢
        • 2011-02-23
        • 2022-01-15
        • 1970-01-01
        • 2014-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-22
        • 1970-01-01
        相关资源
        最近更新 更多