Veri listeleme işlemlerinde sade ve kolay olmasından dolayı Repeater nesnesini birçok yerde kullanırım. Lakin gelen veriler boş ise bunun kontrolünü yapmayı hiç sevmiyordum ancak birkaç veri listeleme işlemlerinde kontrol yaptıktan sonra artık boş kontrolünü yapmadan geçmiyorum. Genelde uyguladığım iki tane seçenek var.
Veritabanından verileri çekip Repeater nesnesine bind yaptığımızı farz ediyorum.
1.Seçenek
Repeater Kontrolümüz:
<asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound">
<FooterTemplate>
<tr>
<td><asp:Label ID="lblbosmsj" Visible="false" Text="Henüz kayıt eklenmemiş." runat="server"></asp:Label></td>
</tr>
</FooterTemplate>
</asp:Repeater>
Kontrolü yapacağımız yer ise ItemDataBound olayı.Eğer Repeater kontrolünde hiç satır yoksa boş iletimizin bulunduğu Label nesnesini bulup durumunu “true” yapıyoruz.
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (Repeater1.Items.Count < 1)
{
if (e.Item.ItemType == ListItemType.Footer)
{
Label lblbosmsj = (Label)e.Item.FindControl("lblbosmsj");
lblbosmsj.Visible = true;
}
}
}
2.Seçenek kolay ve daha sade.
Repeater Kontrolümüz:
<asp:Repeater ID="Repeater1" runat="server">
<FooterTemplate>
<tr id="Tr1" runat="server" visible='<%# kayitVarmi %>'>
<td>Henüz kayıt eklenmemiş td>
</tr>
</FooterTemplate>
</asp:Repeater>
Property oluşturup get scope alanına Repeater‘da satır varmı yokmu kontrolü yapıp yoksa “true” var ise “false” dönderiyoruz.
public bool kayitVarmi
{
get { return Repeater1.Items.Count < 1 ? true : false; }
}