【问题标题】:UpdatePanel Not Displaying Dynamically Added UserControlUpdatePanel 不显示动态添加的用户控件
【发布时间】:2014-06-05 12:46:45
【问题描述】:

我有一个 UpdatePanel 和两个 HiddenField 元素来确定哪个 UserControl 交换到 PlaceHolder 元素。在初始加载时,放置一个(这工作正常)。有两个按钮,根据单击哪个按钮,会出现PostBack,并且应该在所选控件中进行交换。

单击按钮时,会出现PostBack,但在网络调用中,我没有看到任何HTML 被返回,并且页面上显然没有呈现任何内容。我对ASP.NET 了解不多,而且搜索结果尚未引导我找到适合我的解决方案或正确的操作方法。

更新面板

<!-- Update Panel -->
<asp:UpdatePanel ID="PendingApprovalList" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        <!-- Page Navigation Bar -->
        <div style="margin-top: 100px;">
            <!-- Secret Sauce -->
            <asp:HiddenField ID="hf_onChartsPage" runat="server" value="true" />
            <asp:HiddenField ID="hf_onTablesPage" runat="server" value="false" />

            <!-- Navigation Clickables -->
            <a ID="ChartsTab" class="googleAnalyticsNav" runat="server" onserverclick="ChartsClicked">Chart View</a>
            <a ID="TablesTab" class="googleAnalyticsNav" runat="server" onserverclick="TablesClicked">Table View</a>
        </div>

        <!-- Page Content PlaceHolder -->
        <asp:PlaceHolder ID="AnalyticsContent" runat="server"></asp:PlaceHolder>
    </ContentTemplate>
</asp:UpdatePanel>

后面的主页代码

    public partial class LocalGoogleReports : System.Web.UI.UserControl {
    //Constants
    private const string CHARTS_PATH = @"~/userctrls/Admin/Dashboard/Local/AnalyticsCharts.ascx";
    private const string TABLES_PATH = @"~/userctrls/Admin/Dashboard/Local/AnalyticsTables.ascx";

    //Properties
    public int CENTER_NUM;
    public string CENTER_NAME;
    public bool GoToChartsPage {
        get {
            return bool.Parse(hf_onChartsPage.Value);
        }
        set {
            hf_onChartsPage.Value = value.ToString();
        }
    }
    public bool GoToTablesPage {
        get {
            return bool.Parse(hf_onTablesPage.Value);
        }
        set {
            hf_onTablesPage.Value = value.ToString();
        }
    }

    protected void Page_Load(object sender, EventArgs e) {
        if (!IsPostBack) {
            CENTER_NUM = SessionManager.Center.CenterNumber;
            CENTER_NAME = SessionManager.Center.CenterName.ToLower();
            AnalyticsContent.Controls.Clear();
            UserControl chartsControl = (UserControl)LoadControl(CHARTS_PATH);
            AnalyticsContent.Controls.Add(chartsControl);
        } else {
            if (GoToChartsPage) {
                LoadChartsUserControl();                    
            } else {
                LoadTablesUserControl();
            }
        }
    }

    protected void ChartsClicked(object sender, EventArgs e) {
        GoToChartsPage = true;
        GoToTablesPage = false;
    }
    protected void TablesClicked(object sender, EventArgs e) {
        GoToTablesPage = true;
        GoToChartsPage = false;
    }
    private void LoadChartsUserControl() {
        AnalyticsContent.Controls.Clear();
        UserControl chartsControl = (UserControl)LoadControl(CHARTS_PATH);
        AnalyticsContent.Controls.Add(chartsControl);
        ScriptManager.RegisterStartupScript(PendingApprovalList, GetType(), Page.UniqueID,
            "getAnalyticData();", true);
    }
    private void LoadTablesUserControl() {
        AnalyticsContent.Controls.Clear();
        UserControl tablesControl = (UserControl)LoadControl(TABLES_PATH);
        AnalyticsContent.Controls.Add(tablesControl);
    }
}

提前感谢您的帮助!

【问题讨论】:

    标签: c# asp.net user-controls updatepanel


    【解决方案1】:

    尝试使用 PendingApprovalList.UpdatePanel();加载图表或表格后

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-17
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      • 1970-01-01
      相关资源
      最近更新 更多