1

<asp:FormView>データバインドされたフィールドの値に応じて異なる方法で表示したい編集フォーム (を使用) にセクションがあります。

現在、次のようになっています。

<asp:Panel runat="server" Visible='<%# Eval("ClosedBy") != null %>'>
   Closed by user <%# Eval("ClosedBy") %> on <%# Eval("ClosedDate") %>
   <asp:Button runat="server" Text="Reopen" OnClick="Reopen" />
</asp:Panel>
<asp:Panel runat="server" Visible='<%# Eval("ClosedBy") == null %>'>
   <asp:Button runat="server" Text="Close" OnClick="Close" />
</asp:Panel>

(この例は少し単純化しています。両方のパネルにもう少し内容があります。)

これに対処するより良い方法はありますか?表示条件を「if」パネル用と「else」パネル用の 2 回書くのを避ける方法はありますか?

4

1 に答える 1

0

これは、ページの OnLoad ハンドラーのバックエンド コードで行うことができます。OnLoad は、ページが読み込まれてデータバインドされた直後に発生するため、パネルとデータ ソースの両方を使用できます。

両方のパネルに次のような ID を提供する必要があります。

<asp:Panel id="closedByPanel" runat="server">
   <asp:Button runat="server" Text="Close" OnClick="Close" />
</asp:Panel>

バックエンドコードでこれを行うことができます:

protected void OnLoad(object sender, EventArgs e)
{
  closedByPanel.Visible = (someDomainItem.ClosedBy != null);
}
于 2012-08-14T09:24:46.613 に答える