如何在代码隐藏的情况下隐藏和显示asp.net中的asp:按钮?

时间:2014-02-28 12:04:30

标签: c# javascript asp.net updatepanel postback

我正在开发asp.net Web应用程序。 在一个页面中,我有两个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");
}

}

aspx for buttons

    <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>

OnClick事件的aspx按钮事件ApplyAssociation()

<asp:UpdatePanel runat="server" UpdateMode="Conditional">
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
                </Triggers>
                <ContentTemplate>
                <asp:Table runat="server" CssClass="rule_file_whole" BorderWidth="0" Style="padding-top: 30px;">
                <asp:TableRow ID="MerchantRowAssociation" HorizontalAlign="Center">
                            <asp:TableCell>
                                <div style="text-align: center">
                                    <asp:Button ID="AssociationMerchant" Text="Apply Association" runat="server" OnClick="ApplyAssociation"
                                        CssClass="search_button_in_vm_associate1 " OnClientClick="return checkValidation()" />
                                </div>
                            </asp:TableCell>
                        </asp:TableRow>
                                            </asp:Table>
                </ContentTemplate>
            </asp:UpdatePanel>

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:4)

您可以简单地使用Button的{​​{3}}属性,该属性更直接,更干净。

ButtonReplaceId.Visible = false;
  

如果此属性为false,则不呈现服务器控件。您   在组织页面布局时应考虑到这一点。   如果未呈现容器控件,则包含它包含的任何控件   即使您设置了Visible属性,也不会呈现   个人控制为真。在那种情况下,个人控制   即使您已明确设置,也会为Visible属性返回false   这是真的。 (也就是说,如果父控件的Visible属性是   设置为false,子控件继承该设置和设置   优先于任何本地设置。)Visible

尝试更改当前UpdatePanel中不存在的ajax调用中的控件状态。将按钮放在同一个UpdatePanel中,然后您就可以更改状态。

答案 2 :(得分:1)

ButtonReplaceId.Visible = false;
ButtonAssociateRules.Visible = false;