2012-08-14 76 views
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'面板?

回答

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); 
} 
+0

「的OnLoad火災右後並且是數據綁定「 - 不,OnLoad的時間不依賴於頁面是數據綁定的時間,並且大多數頁面在OnLoad激活後很長時間會被數據綁定。 「OnDatabinding」事件可能有效,但即使發生這種變化,您也沒有真正回答這個問題。 – Rich 2013-03-04 17:36:04