
Большинство из нас часто использует ASP.NET контрол Repeater
для вывода данных. Не редкая ситуация когда массив данных для вывода оказывается пустым. Такие контролы как GridView
и ListView
имеют свойство EmptyDataTemplate
, позволяющее задать шаблон отображаемой информации для такого случая. Но контрол Repeater
такого свойства не имеет, и нам приходиться дописывать особую логику в коде (code behind), что бы при отсутствии данных отобразить сообщение типа «Ничего не найдено».
Это можно сделать намного проще без необходимости писать что либо в code behind файле. Вот как:
<asp:Repeater ID="repeater1" runat="server"> <ItemTemplate> <!-- Сюда добавляем шаблон вывода элемента массива данных --> </ItemTemplate> <FooterTemplate> <asp:Label ID="labelEmpty" Text="Ничего не найдено" runat="server" Visible='<%#bool.Parse((repeater1.Items.Count==0).ToString())%>'> </asp:Label> </FooterTemplate> </asp:Repeater>
Как видите, в FooterTemplate
мы добавили контрол Label
с текстом, который хотим вывести при отрицательном результате («Ничего не найдено»). То будет ли отображаться данный Label
, контролируется свойством Visible
, в которое мы записали следующее логическое выражение:
<%#bool.Parse((repeater1.Items.Count==0).ToString())%>
Как вы уже догадались, оно будет true только в случае отсутствия элементов в массиве repeater1.Items
.