私はasp.netWebアプリケーションに取り組んでいます。 1つのページに2つのaspボタンがあります。 1つの条件で表示したいのですが、そうでない場合は表示したくありません。だから私はこのように同じことをしようとしています。しかし、それは機能していません。その背後にある理由を見つけることができません。問題はどこにあるのか教えてください。
ボタンを非表示にするには
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>
条件付き更新パネルを使用しているので、更新パネル内にボタンを配置した後、これらのいずれかを試すことができます。
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>
Visible
の- Button
プロパティを簡単に使用できます。これはより簡単でクリーンです。
ButtonReplaceId.Visible = false;
このプロパティがfalseの場合、サーバーコントロールはレンダリングされません。ページのレイアウトを整理するときは、これを考慮に入れる必要があります。コンテナコントロールがレンダリングされない場合、個々のコントロールのVisibleプロパティをtrueに設定しても、コンテナコントロールに含まれるコントロールはレンダリングされません。その場合、明示的にtrueに設定していても、Visibleプロパティに対して個々のコントロールはfalseを返します。 (つまり、親コントロールのVisibleプロパティがfalseに設定されている場合、子コントロールはその設定を継承し、設定はどのローカル設定よりも優先されます。) [〜#〜] msdn [〜#〜] 。
あなたは現在のUpdatePanelにないajax呼び出しで制御の状態を変更しようとしています。ボタンを同じUpdatePanelに配置すると、状態を変更できるようになります。
ButtonReplaceId.Visible = false;
ButtonAssociateRules.Visible = false;