2009-09-15 69 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

相關問題