【问题标题】:Listview/DetailsView: Hide a null fieldListview/DetailsView:隐藏空字段
【发布时间】:2009-09-29 14:51:42
【问题描述】:

我想这是一个相当普遍的问题,但我还没有找到一个优雅的解决方案。

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

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

提前致谢。

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

【问题讨论】:

    标签: asp.net listview detailsview


    【解决方案1】:

    标记:

     <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;
    
    }
    

    【讨论】:

      【解决方案2】:

      在模板内也绑定到可见性

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

      警告:未测试,也可能是

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-09-03
          • 2013-10-02
          • 2014-11-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-03
          相关资源
          最近更新 更多