EmptyDataTemplate в Repeater, или как вывести особое сообщение при отсутствии данных

ASP.NET

Большинство из нас часто использует 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.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>