2011-12-05 40 views
1

我很困惑。我有一個有3個表格的網絡表格。我想根據某些條件顯示/隱藏它們。除了一種情況,它一切正常。將aspx表的可見性設置爲true會失敗

這是我有:

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

     <table id="tab1" runat="server" visible="true" width="100%"> 
      ... 
     </table> 
     <table id="tab2" runat="server" visible="false" width="100%"> 
      ... 
     </table> 
     <table id="tab3" runat="server" visible="false" width="100%"> 
      ... 
     </table> 
    </ContentTemplate> 
</asp:UpdatePanel> 

以後,我就加入到該頁面的幾個按鈕,並取決於哪一個被踩下,我會改變表的知名度。 我的問題是,在特定條件下,我將tab3的可見性更改爲true,並將tab1和tab2的值更改爲false,而tab1將其可見性設置爲false,則tab3不會將其可見性設置爲true ...嘆息!

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     ... 
     if (!editMode) 
     { 
      tab1.Visible = false; 
      tab2.Visible = false; 
      tab3.Visible = true; 
     } 
    } 
} 

在調試模式下,當我瀏覽這些指令時,tab3.visibile = true不會改變tab3的屬性! 以前這件事發生在你身上嗎?你是如何解決它的?

非常感謝!

+0

代碼和概念看起來很好。是否有可能有多個名爲tab3的元素? – CSharpened

+0

號只有一個。這是令人費解的,因爲它在我必須展示它的按鈕中工作正常。但是,在這種情況下,我想在頁面加載時向右顯示tab3 –

+0

因此,當您第一次加載頁面時,它會逐步點擊該行,但會產生錯誤的效果(即不顯示錶3)。有沒有其他地方的CSS或聲明可能會覆蓋您在頁面加載調用之後調用的函數? – CSharpened

回答

2

的問題可能在於更新面板。

如果你想更新從更新面板以外的內容,那麼你將需要指定將更新面板

<asp:PostBackTrigger ControlID="Button1" EventName="Click"> 

的後背面元件面板沒有指定觸發則控制更新面板將不會更新其中的屬性。

0

嗯,這可能是你的問題就在這裏:

if (!Page.IsPostBack) 

這將導致if conditionstatement將只跑了一次 - 當 頁面首先加載。

發出回發(即您按下按鈕)時,將無法達到此聲明。

嘗試改用

if (Page.IsPostBack) 
+1

他顯示的代碼僅用於設置頁面的默認值,因此他只需要在頁面首次加載時運行一次。 – CSharpened

相關問題