根据数据绑定值显示或隐藏控件

时间:2012-08-14 09:19:12

标签: asp.net

我在编辑表单中有一个部分(使用<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'面板?

1 个答案:

答案 0 :(得分: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);
}