【问题标题】:How to hide table rows in a DataList if column data returns null from SQL Server如果列数据从 SQL Server 返回 null,如何在 DataList 中隐藏表行
【发布时间】:2018-12-10 20:01:15
【问题描述】:

如果列数据从 SQL Server 返回 null(对于每个单独的列),我需要隐藏 DataList 中的表行。我让它成功运行,但这种方法会非常乏味,因为我的表中有大约 100 行。当然有更简单的方法。

这是我的 C# 代码:

protected void DataList1_ItemDataBound1(object sender, DataListItemEventArgs e)
{
    if ((String.IsNullOrEmpty(((Label)e.Item.FindControl("lblAccountStatus")).Text)))
    {
        HtmlTableRow row = (HtmlTableRow)e.Item.FindControl("rowAccountStatus");
        row.Visible = false;
    }

    if ((String.IsNullOrEmpty(((Label)e.Item.FindControl("lblAccountName")).Text)))
    {
        HtmlTableRow row = (HtmlTableRow)e.Item.FindControl("rowAccountName");
        row.Visible = false;
    }
}

这是我的网络表单标记:

<asp:DataList ID="DataListAccount" runat="server" OnItemDataBound="DataList1_ItemDataBound1">
    <ItemTemplate>

        <tr>
            <td style="width: 171px">Account Status:</td>
            <td style="width: 220px">
                <asp:Label ID="lblAccountStatus" runat="server" Text='<%# Eval("ACCOUNT_STATUS") %>'></asp:Label>
            </td>
        </tr>
        <tr id="rowAccountName">
            <td style="width: 171px">Account Status:</td>
            <td style="width: 220px">
                <asp:Label ID="lblAccountName" runat="server" Text='<%# Eval("ACCOUNT_NAME") %>'></asp:Label>
            </td>
        </tr>

    </ItemTemplate>
</asp:DataList>

【问题讨论】:

    标签: c# asp.net webforms datalist


    【解决方案1】:

    您可以使用 PlaceHolder 包装 ItemTemplate 内容并使用三元运算符来设置可见性。

    <asp:PlaceHolder ID="PlaceHolder1" runat="server" Visible='<%# !string.IsNullOrEmpty(Eval("ACCOUNT_STATUS").ToString()) ? true : false %>'>
    
        <tr>
            <td style="width: 171px">Account Status:</td>
            <td style="width: 220px">
                <asp:Label ID="lblAccountStatus" runat="server" Text='<%# Eval("ACCOUNT_STATUS") %>'></asp:Label>
            </td>
        </tr>       
    
    </asp:PlaceHolder>
    

    但我建议您确保过滤空项目的源数据。类似的东西

    SELECT * FROM accounts WHERE account_status IS NOT NULL
    

    【讨论】:

      【解决方案2】:

      只需添加多个条件修改此代码

      string value = Convert.ToString( row["MyColumn"]); 
      if (string.IsNullOrEmpty(value))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-10
        • 1970-01-01
        • 2013-09-10
        • 1970-01-01
        • 1970-01-01
        • 2020-02-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多