2009-09-15 87 views
1

我有一个UpdatePanel内部的面板控制。当我设置Panel.Enabled = false;回发时,面板内的所有控件都被禁用。但是,当我调用Panel.Visible = false;在回发时,面板仍然显示。Panel.Enabled在UpdatePanel中工作。 Panel.Visible不

此代码预期:

protected void rdoPayment_CheckedChanged(object sender, EventArgs e) 
{ 
    pnlBillingAddress.Enabled = rdoCreditCard.Checked; 
    upBillingAddress.Update(); 
} 

如果我的代码更改为这一点,当它被设置为false面板仍清晰可见:

protected void rdoPayment_CheckedChanged(object sender, EventArgs e) 
{ 
    pnlBillingAddress.Visible = rdoCreditCard.Checked; 
    upBillingAddress.Update(); 
} 

而且,如果我更改代码像这样,当启用设置为假时,控件不再被禁用并且面板仍然可见:

protected void rdoPayment_CheckedChanged(object sender, EventArgs e) 
{ 
    pnlBillingAddress.Enabled = rdoCreditCard.Checked; 
    pnlBillingAddress.Visible = rdoCreditCard.Checked; 
    upBillingAddress.Update(); 
} 

任何人都知道这里发生了什么?

ps。我可以发布代码的aspx部分,但它很长,所以我只会在绝对需要时发布它。

回答

4

一旦ASPX的仔细检查,我意识到小组实际上缠绕在UpdatePanel代替反之亦然。我把面板放在ContentTemplate里面,一切都很好。

2

小组的Visible属性,因为它的父控件的可见性也被设置为true返回true。这不是有据可查的,但这里有一个相关的博客文章:ASP.Net: Remember, the .Visible property also checks parent’s visibility!

也许你需要重构你的代码,并使用单独的UpdatePanel的只是面板和设置在UpdatePanel的知名度来代替。我建议设置一个断点并在测试后使用控件及其父项的不同值检查可见性。

虽然上面的链接似乎准确的占位符控制等,似乎很奇怪,如果应用到一切它,因为这应该是一个常见的场景。我开始测试这个,并在UpdatePanel中设置面板的可见性工作正常。

+0

这是不完全的问题,但它使我吧,这样的感谢! 一旦ASPX的仔细检查,我意识到小组是在实际包装的UpdatePanel,而不是反之亦然。我把面板放在里面,一切都很好。 再次感谢! – 2009-09-15 21:26:54

+0

太棒了!我相应地更新了我的帖子。我知道可见性问题并不总是适用于其他控制,但听起来像是一种可能性。测试帮助。 – 2009-09-15 22:06:35

相关问题