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