【问题标题】:Access control of dynamically added user control from parent page从父页面动态添加用户控件的访问控制
【发布时间】:2013-10-16 15:12:52
【问题描述】:

我有一个 Product.aspx 页面,其中有一个 asp:panel。我在其中动态添加一个UserControl

protected void Page_Load(object sender, EventArgs e)
{            
    UserControl userControl = (UserControl)this.LoadControl(Programs/Test/Test.ascx);
    this.pnlLayoutDetails.Controls.Add(userControl);
    LayoutPanels = pnlLayoutDetails.Controls[1];
}

我在 Product.aspx 页面中有一个按钮。我从这个按钮的UserControl onClick 中隐藏了一些Panels。代码正在正确执行,但是当我看到输出时它没有任何效果(所有控件都可见)。

button_click的代码

var pnlLayout = (Panel)LayoutPanels.FindControl("pnlLayout" + layout.LayoutID.ToString());
if (pnlLayout != null)
    pnlLayout.Visible = false;

更新: 如果我从 aspx 页面中删除 ajax 面板,那么它工作正常。但是使用 ajax 面板会产生问题。我无法弄清楚。请建议。

谢谢

【问题讨论】:

  • 你有什么理由动态而不是声明地添加 UC 吗?
  • 是的,这取决于用户类型,并且针对不同的用户有不同的控件
  • LayoutPanels 里面应该有什么?用户控制?你是直接把控制[1]放在第二个吗?
  • 您遇到了什么问题?
  • 请确认您是否在 aspx 页面中正确设置了 UpdatePanel.UpdateMode。还要检查您是否在后面的代码中错过了 UpdatePanel.Update()。如果可能,请同时发布您的 aspx 侧代码。

标签: c# asp.net entity-framework user-controls


【解决方案1】:

我猜是because you might not have panel in update panel section

尝试将您的面板移动到 aspx 页面。它会解决你的问题。

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>

            <asp:Panel runat="server" ID="pnlLayoutDetails" >
                    //dynamically added usercontrol
            </asp:Panel>

    </ContentTemplate>
</asp:UpdatePanel>

然后执行它就可以了。

var pnlLayout = (Panel)LayoutPanels.FindControl("pnlLayout" + layout.LayoutID.ToString());
if (pnlLayout != null)
    pnlLayout.Visible = false;

【讨论】:

    猜你喜欢
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    相关资源
    最近更新 更多