【问题标题】:How to hide and display asp:buttons in asp.net from code behind?如何从后面的代码中隐藏和显示 asp.net 中的 asp:buttons?
【发布时间】: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;
  • 您应该首先调试实际执行的代码部分,因为您的解决方案以及提供的解决方案(哪个更好)应该可以工作
  • 也试过调试,没解决。这就是我在这里发帖的原因。

标签: c# javascript asp.net updatepanel postback


【解决方案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;不工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多