2013-10-14 56 views
0

我有一个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网页上的按钮。我从UserControlonClick这个按钮隐藏了一些Panel。代码正在正确执行,但是当我看到输出时,它不显示任何效果(所有控件都可见)。

button_click

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

更新代码:如果我从aspx页面删除阿贾克斯面板然后正常工作。但是,使用Ajax面板会产生问题。我无法弄清楚。请建议。

谢谢

+0

你有什么理由为什么要动态地添加UC而不是声明性的? –

+0

是的,它取决于usertype和不同的用户有不同的控制 – James

+0

什么是应该在LayoutPanels内?用户控件?方式是你直接控制[1]你是否永远是第二个? –

回答

0

我想这是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; 
相关问题