2014-02-28 11 views
5

Ich arbeite an asp.net Web-Anwendung. In einer Seite habe ich zwei ASP-Tasten. Ich möchte sie in einer Bedingung anzeigen, sonst möchte ich sie nicht anzeigen. Also versuche ich das Gleiche zu tun. Aber es funktioniert nicht. Ich kann den Grund nicht finden. Bitte sagen Sie mir, wo das Problem ist.Wie zu verbergen und asp: Schaltflächen in asp.net von Code hinter anzuzeigen?

Um Buttons

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

Tasten anzuzeigen

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

} 

aspx für Knöpfe

<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 der Taste für OnClick Ereignis ApplyAssociation()

ausblenden 10
+0

hat dies auch versucht: ButtonAssociateRules.Visible = false; ButtonReplaceId.Visible = false; – user3264676

+0

Sie sollten zuerst debuggen, welcher Teil des Codes tatsächlich ausgeführt wird, weil Ihre Lösung sowie die bereitgestellten (die besser sind) funktionieren sollte –

+0

versuchte Debugging auch, konnte es nicht gelöst werden. Deshalb habe ich hier gepostet. – user3264676

Antwort

5

Da Sie ein Bedingungsupdate-Fenster verwenden, können Sie eines der beiden nach dem Einfügen der Schaltflächen in ein Update-Fenster ausprobieren.

Hier ist ein Beispiel für Ihre Schaltflächen in einem Update-Panel.

<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

Sie können einfach die Visible Eigenschaft von Button verwenden, die einfacher und sauberer ist.

ButtonReplaceId.Visible = false; 

Wenn diese Eigenschaft false ist, wird die Server-Steuerung nicht gerendert. Sie sollten dies beim Organisieren des Layouts Ihrer Seite berücksichtigen. Wenn ein Containersteuerelement nicht gerendert wird, werden alle darin enthaltenen Steuerelemente nicht gerendert, selbst wenn Sie die Visible-Eigenschaft eines einzelnen Steuerelements auf true festlegen. In diesem Fall gibt das individuelle Steuerelement für die Visible-Eigenschaft den Wert false zurück, auch wenn Sie explizit auf true festgelegt haben. (Wenn die Visible-Eigenschaft des übergeordneten Steuerelements auf false festgelegt ist, erbt das untergeordnete Steuerelement diese Einstellung und die Einstellung hat Vorrang vor allen lokalen Einstellungen.) MSDN.

Sie sind versuchen, den Zustand der Steuerung in Ajax-Aufruf zu ändern, die nicht in der aktuellen Update ist. Setzen Sie die Schaltflächen in das gleiche UpdatePanel, dann können Sie den Status ändern.

+0

hat dies bereits versucht ButtonReplaceId.Visible = false; Funktioniert nicht – user3264676

+1

Sie haben versucht, den Status der Steuerung in Ajax-Aufruf zu ändern, der sich nicht im aktuellen UpdatePanel befindet. Setzen Sie die Schaltflächen in das gleiche UpdatePanel, dann können Sie den Status ändern. – Adil

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

hat dies bereits ButtonReplaceId versucht.Sichtbar = falsch; Funktioniert nicht – user3264676