2009-09-29 101 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的数据绑定事件,检查值并隐藏控件,如果它为空。 既不是一个非常优雅的解决方案,但我想这是由你来决定的。 :)