如何从后面的代码中隐藏和显示 asp.net 中的 asp:buttons?

Posted

技术标签:

【中文标题】如何从后面的代码中隐藏和显示 asp.net 中的 asp:buttons?【英文标题】:How to hide and display asp:buttons in asp.net from code behind? 【发布时间】:2014-04-01 10:18:10 【问题描述】:

我正在开发 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");



按钮的aspx

    <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 事件 ApplyAssociation() 按钮的 aspx

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

【问题讨论】:

也试过这个:ButtonAssociateRules.Visible = false; ButtonReplaceId.Visible = false; 您应该首先调试实际执行的代码部分,因为您的解决方案以及提供的解决方案(哪个更好)应该可以工作 也试过调试,没解决。这就是我在这里发帖的原因。 【参考方案1】:

鉴于您正在使用条件更新面板,您可以在将按钮放入更新面板后尝试其中任何一种。

    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>

【讨论】:

【参考方案2】:

您可以简单地使用ButtonVisible 属性,它更直接和干净。

ButtonReplaceId.Visible = false;

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

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

【讨论】:

已经试过了 ButtonReplaceId.Visible = false;不工作 您试图更改不在当前 UpdatePanel 中的 ajax 调用中的控制状态。将按钮放在同一个 UpdatePanel 中,您就可以更改状态。【参考方案3】:
ButtonReplaceId.Visible = false;
ButtonAssociateRules.Visible = false;

【讨论】:

已经试过了 ButtonReplaceId.Visible = false;不工作

以上是关于如何从后面的代码中隐藏和显示 asp.net 中的 asp:buttons?的主要内容,如果未能解决你的问题,请参考以下文章

Asp.net 如何将列表从代码隐藏发送到 javascript 以在 googlemap 中显示坐标

将对象从dll文件传递到文件asp.net c#后面的代码

类中的异常处理和 C# 的代码隐藏

从 C# 代码隐藏错误创建 ASP.NET 控件

根据asp.net中的值隐藏元素?

从asp.net后面的代码中获取锚元素的href属性