2

我想这是一个很常见的问题,但到目前为止我还没有找到一个优雅的解决方案。

我有许多实例,其中我有一个绑定到 SQL Server SProc 的 ListView 或 DetailsView 控件。我遇到的问题是,有很多情况下,当一列为 Null 时,我想在 UI 中显示不同的内容。一个典型的例子是我有一个 URL 列,它呈现为 LinkBut​​ton(在 ListViews 中)或 HyperLinkField(在 DetailsViews 中) - 当返回 Null URL 时,我正在呈现没有 src 属性的链接。理想情况下,在这种情况下,我不想在此字段中显示任何内容。

在每种情况下,当返回空值时,我如何跳过/更改该项目的呈现?

提前致谢。

更新:我还没有机会实际尝试这些,但所有有用的建议。我想我喜欢 Ricks 的回答最好,但再次感谢其他人......

4

3 回答 3

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;

}
于 2009-09-29T19:02:06.050 回答
1

在模板内也绑定到可见性

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

警告:未测试,也可能是

<asp:HyperLink ... NavigateURL=<%# Eval("url") %> Visible=<%# Eval("url") != DBNull.Value %> />
于 2009-09-29T15:03:36.590 回答
1

我想您可以在后面的代码中创建一个方法,该方法将值作为参数并在它不为空时返回一个链接。或者您可以利用 Listview 的数据绑定事件,检查该值并在它为空时隐藏控件。都不是一个非常优雅的解决方案,但我想这取决于你来决定。:)

于 2009-09-29T15:05:50.250 回答