2014-02-28 54 views
5

我正在使用asp.net web應用程序。 在一頁中我有兩個asp按鈕。 我想在一種情況下顯示它們,否則我不想顯示它們。 所以我試圖做這樣的事情。但它不工作。 我無法找到背後的原因。請告訴我問題在哪裏。如何從後面的代碼隱藏和顯示在asp.net中的asp:按鈕?

要隱藏按鈕

if (!IsPostBack) 
      { 
       ButtonReplaceId.Style.Add("display", "none"); 
       ButtonAssociateRules.Style.Add("display", "none"); 
      } 

要顯示的按鈕

protected void ApplyAssociation(object sender, EventArgs e) 
{ 
//Some piece of code 
if(a==0) 
{ 
ButtonAssociateRules.Style.Add("display", "block"); 
ButtonReplaceId.Style.Add("display", "block"); 
} 

} 

爲按鈕

<div style ="padding-left:400px;"> 
     <asp:Button ID="ButtonAssociateRules" runat="server" OnClick="AssociateMultipleRulesButtonClick" 
      CssClass="search_button_in_vm_intersection" Text="Associate Multiple Rules" 
      OnClientClick="return OnClientClickAssociateRewardRuleFile();" /> 

     <asp:Button ID="ButtonReplaceId" runat="server" OnClick="ApplyReplaceIfRuleIntersects" 
      CssClass="search_button_in_vm_intersection" Text="Replace Previous Rules" 
      OnClientClick="return OnClientClickReplaceRewardRuleFile();" /> 

    </div> 

ASPX按鈕爲OnClick事件ApplyAssociation()

ASPX 10
+0

也試過這個: ButtonAssociateRules.Visible = false; ButtonReplaceId.Visible = false; – user3264676

+0

您應該首先調試代碼的哪一部分實際執行導致您的解決方案以及提供的那些(哪個更好)應該工作 –

+0

也嘗試調試過,無法解決它。這就是我在這裏發佈的原因。 – user3264676

回答

5

鑑於您在使用條件更新面板,您可以在將按鈕放入更新面板後嘗試執行其中任一操作。

protected void ApplyAssociation(object sender, EventArgs e) 
    { 
     //Some piece of code 
     if (a == 0) 
     { 
      ButtonAssociateRules.Style["visibility"] = "hidden"; 
      ButtonReplaceId.Style["visibility"] = "hidden"; 
      myUpdatePanel.Update(); 
     } 
    } 
    protected void ApplyAssociation(object sender, EventArgs e) 
    { 
     //Some piece of code 
     if (a == 0) 
     { 
      ButtonAssociateRules.Visible = false; 
      ButtonReplaceId.Visible = false; 
      myUpdatePanel.Update(); 
     } 
    } 

下面是更新面板中的按鈕示例。

<asp:UpdatePanel ID="myUpdatePanel" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
      <div style="padding-left:400px;"> 
       <asp:Button ID="ButtonAssociateRules" runat="server" OnClick="AssociateMultipleRulesButtonClick" 
        CssClass="search_button_in_vm_intersection" Text="Associate Multiple Rules" 
        OnClientClick="return OnClientClickAssociateRewardRuleFile();" /> 
       <asp:Button ID="ButtonReplaceId" runat="server" OnClick="ApplyReplaceIfRuleIntersects" 
        CssClass="search_button_in_vm_intersection" Text="Replace Previous Rules" 
        OnClientClick="return OnClientClickReplaceRewardRuleFile();" /> 
      </div> 
    </ContentTemplate> 
</asp:UpdatePanel> 
4

您可以簡單地使用ButtonVisible屬性,這是更直接和乾淨。

ButtonReplaceId.Visible = false; 

如果此屬性爲false,服務器控件不呈現。您在組織頁面佈局時應考慮到這一點。 如果未呈現容器控件,則即使將單個控件的Visible屬性設置爲true,也不會呈現它包含的任何控件 。在這種情況下,即使您已明確將 設置爲true,單個控件 也會爲Visible屬性返回false。 (即,如果父控件的Visible屬性爲 設置爲false,則子控件繼承該設置,並且設置 優先於任何本地設置。)MSDN

您是試圖改變在Ajax調用,是不是在當前的UpdatePanel控制的狀態。把按鈕放在同一個UpdatePanel中,然後你就可以改變狀態。

+0

已經試過這個ButtonReplaceId.Visible = false; 不起作用 – user3264676

+1

您試圖更改不在當前UpdatePanel中的ajax調用中的控件狀態。把按鈕放在同一個UpdatePanel中,然後你就可以改變狀態。 – Adil

1
ButtonReplaceId.Visible = false; 
ButtonAssociateRules.Visible = false; 
+0

試過這個已經ButtonReplaceId。Visible = false; 不工作 – user3264676