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”面板?

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 回答