2017-08-02 51 views
0

我已经绑定了一个DataSet到一个ListView。在ListView ItemTemplate中,如果一个行值为空,我不想要它,或者它所包含的<td>元素显示。ASP.NET-IF Listview在aspx页面中不起作用,有没有其他的选择?

在我的代码中,会显示第一行的值。但是,当我尝试在第二个<td>元素上使用If语句时,将不会显示。

<asp:ListView ID="ListView1" runat="server" GroupPlaceholderID="groupPlaceHolder1" ItemPlaceholderID="itemPlaceHolder1"> 
    <LayoutTemplate> 
     <table> 
      <asp:PlaceHolder runat="server" ID="groupPlaceHolder1"> </asp:PlaceHolder> 
     </table> 
    </LayoutTemplate> 
    <GroupTemplate> 
     <tr> 
      <asp:PlaceHolder runat="server" ID="itemPlaceHolder1"> </asp:PlaceHolder> 
     </tr> 
    </GroupTemplate> 
    <ItemTemplate> 

     <td> 
      <%# Eval("textItem1") %> 
     </td> 

     <% if (!String.IsNullOrEmpty(textItem2){ %> 
     <td> 
      <%# Eval("textItem2") %> 
     </td> 
     <%} %> 

    </ItemTemplate> 
</asp:ListView> 

,如果声明在aspx页面工作,如果其不被在ListView,中继器使用,或GridView控件(或不是吗?)。我需要能够检查该字符串行的值是​​否为空,并且不显示它或包含它的<td>元素。我不反对使用代码隐藏的解决方案。有没有另一种方式来做到这一点,然后我的尝试?

+0

你可以发布你的代码,你在哪里分配数据源到列表视图。 –

+0

填充数据集背后的代码是不相关的,所以我没有将它添加到问题中。 – cjtampa

回答

0

我用一个非常简单的方法解决..

在上面的代码中,我换出这个...

<% if (!String.IsNullOrEmpty(textItem2){ %> 
    <td> 
     <%# Eval("textItem2") %> 
    </td> 
    <%} %> 

对于此...

<%# writeText(Eval("textItem2").ToString())%> 

而摆这种方法在后面的代码...

public string writeText(string kiss) 
    { 
     if (!String.IsNullOrEmpty(kiss)) 
      return "<td> " + kiss + "</td>"; 
     else 
      return null; 

    } 
相关问题