我正在开发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>
答案 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;