webForumDet fria alternativet

"no records to display" i repeater

.NET

4 svar · 619 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Tjena,

Försöker visa ett meddelande i min repeater om det inte finns några poster tillgängliga. Såhär har jag gjort:

<asp:Repeater ID="RadGrid1" runat="server">
	<HeaderTemplate>
		<div class="ut-header clearfix">
			<p class="title">Rubrik</p>
			<p class="paging">&nbsp;</p>
		</div>
	</HeaderTemplate>
	<ItemTemplate>
		<%# OutputItem((Container.DataItem as TournamentOverview)) %>
	</ItemTemplate>
	<FooterTemplate>[red][b]
		<asp:Panel id="pnlNoData" runat="server" visible="true" CssClass="ut-content">
			No records to display<br />
			<span>Please reload the page in a while.</span>
		</asp:Panel>[/b][/red]
	</FooterTemplate>
</asp:Repeater>

Sen det här för att fylla listan med data:

void PopulateList() {
	...
	RadGrid1.DataSource = tourList;
	RadGrid1.DataBind();
}

Förstår inte dock hur jag ska kunna hitta min div nere i <FooterTemplate> och sätta Visible till True/False.

Några förslag?

Medlem sedan okt. 2007446 inlägg
#2

kan du inte lägga pnlNoData utanför repeatern?

vad är tourList förnånting?
du skulle ju tom kunna kolla om den innehåller poster och då tom låta bli att databinda repeatern

Medlem sedan feb. 20034 441 inlägg
#3

tourList är det som returneras av en webservice.
Jag har testat det här:

if(tourList.Count > 0){
   //DataBind();
}else{
   // Panel.Visible = true
}

Problemet är att jag inte kan göra min Panel synlig så länge den ligger inuti Repeatern. Det funkar inte ens att med FindControl() hitta den.

Medlem sedan okt. 2007446 inlägg
#4

jag snabbgooglade och hittade denna
http://stackoverflow.com/questions/701412/how-to-find-controls-in-a-repeater-header-or-footer
så nåt i stil med

Ctype(Repeater1.Controls(Repeater1.Controls.Count - 1).Controls(0).FindControl("lblControl"), Panel).visible=false

klart ovackert, jag skulle lägga panelen utanför repeatern istället

Medlem sedan feb. 20034 441 inlägg
#5

rhdf skrev:

Ctype(Repeater1.Controls(Repeater1.Controls.Count - 1).Controls(0).FindControl("lblControl"), Panel).visible=false

klart ovackert, jag skulle lägga panelen utanför repeatern istället

Jo, är redo att hålla med.. Gjorde så istället. La även innehållet i <headerTemplate> utanför repeatern, eftersom jag vill ha samma header oavsett om det finns poster eller inte.

251 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)