2009-09-29 141 views
2

我想這是一個相當普遍的問題,但至今我還沒有找到一個優雅的解決方案。Listview/DetailsView:隱藏空字段

我有一些實例,我有一個ListView或DetailsView控件綁定到SQL Server SProc。我遇到的問題是,有很多情況下,當列爲Null時,我想在UI中顯示不同的內容。一個典型的例子是,我有一個URL列被呈現爲LinkBut​​ton(在ListViews中)或HyperLinkField(在DetailsViews中) - 當返回一個空的URL時,我呈現的鏈接沒有src屬性。理想情況下,我想在這種情況下在此字段中不顯示任何內容。

在每種情況下,當返回空值時,如何跳過/更改該項目的渲染?

在此先感謝。

更新:我還沒有機會嘗試這些,但所有有用的建議。我想我喜歡裏克斯回答最好,但再次感謝別人......

回答

2

標記:

<asp:HyperLink id="whatever" runat="server" 
    NavigateURL='<%# Eval("url") %>' Visible='<%# IsVisible(Eval("url")) %>' /> 

背後代碼:

protected bool IsVisible(object obj) 
{ 
    bool result = false; 

    string url = (string)obj; 
    if(!string.IsNullOrEmpty(url)) 
    { 
      result = true; 
    } 

    return result; 

} 
1

中的模板綁定也能見度

<asp:HyperLink ... NavigateURL=<%# Eval("url") %> Visible=<%# Eval("url") != null %> /> 

警告:未測試,也可以

<asp:HyperLink ... NavigateURL=<%# Eval("url") %> Visible=<%# Eval("url") != DBNull.Value %> /> 
1

我想你可以在後面的代碼中創建一個方法,它將該值作爲參數,如果它不爲null,則返回鏈接。或者你可以點擊Listview的數據綁定事件,檢查值並隱藏控件,如果它爲空。 既不是一個非常優雅的解決方案,但我想這是由你來決定的。 :)