如何从后面的代码中隐藏和显示 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】:您可以简单地使用Button
的Visible
属性,它更直接和干净。
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?的主要内容,如果未能解决你的问题,请参考以下文章