Как скрыть строки таблицы в DataList, если данные столбца возвращают ноль из SQL Server - PullRequest
0 голосов
/ 10 декабря 2018

Мне нужно скрыть строки таблицы в DataList, если данные столбца возвращают ноль из SQL Server (для каждого отдельного столбца).У меня он работает успешно, но этот метод будет очень утомительным, так как в моей таблице около 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>

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Вы можете обернуть содержимое ItemTemplate с помощью PlaceHolder и использовать троичный оператор для установки видимости.

<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
0 голосов
/ 10 декабря 2018

просто измените этот код, добавив несколько условий

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