Используя VS 2008, у меня есть элемент управления Repeater:Текст по умолчанию для управления пустой Repeater
<asp:Repeater runat="server" ID="storesRep" DataSourceID="storeSqlDataSource"
OnItemDataBound="StoresRep_ItemDataBound">
<ItemTemplate>
<table style="padding:0px">
<tr>
<td style="width:200px"><asp:Label ID="infoLbl" runat="server">
Choose stores for upload:</asp:Label>
</td>
<td style="width:110px">
<asp:Label ID="storeLbl" runat="server" Text='<%# Bind("Name") %>'>
</asp:Label>
</td>
<td><asp:CheckBox runat="server" ID="storeCheck" /></td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="storeSqlDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:someConnectionString %>"
SelectCommand="SELECT [StoreId], [Name] FROM [Store] Order By [Name]">
</asp:SqlDataSource>
Теперь я хотел бы, чтобы отобразить текст по умолчанию, как «Нет магазинов не найдено», если источник данных не возвращает элементы из базы данных. До сих пор я в основном использовал GridView
, где у меня не было проблем из-за атрибута EmptyDataText
.
@marquito Если вам грустно о семантическом диссонансе, вы всегда можете использовать 'Panel' и показывать/скрывать это в' OnItemDataBound' вместо FooterTemplate ... – pseudocoder
@pseudocoder печаль происходит из-за отсутствия выхода -of-the-box способ сделать это. Кроме того, я вынужден проверять каждый элемент данных, чтобы проверить, пуст ли конечный результат. Также должно быть событие OnFinishedDataBinding, которое предотвратило бы ненужные вызовы OnItemDataBound. – marquito
Я смог успешно использовать этот подход после нескольких попыток с помощью разных методов. Я думаю, что использование 'panel' вместо' label' добавило бы еще большую гибкость, и я тоже с нетерпением жду этого. Спасибо, что поделились этим! –