Mam Repeater wyświetlający w każdym wierszu obrazek, tytuł i opis:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1"
onitemdatabound="Repeater1_ItemDataBound">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td rowspan=4>
<asp:Image ID="imgObraz" runat="server" />
<asp:HiddenField
ID="hdfId" runat="server" Value='<%# Eval("Id") %>' />
</td>
<td bgcolor="#CCFFCC">
<asp:Label runat="server" ID="lblDOd" Text='<%# Eval("DOd") %>' />
</td>
</tr>
<tr>
<td bgcolor="#CCFFCC">
<asp:Label runat="server" ID="Label3" Text='<%# Eval("Tytul") %>' />
</td>
</tr>
<tr>
<td bgcolor="#CCFFCC">
<asp:Label runat="server" ID="Label1" Text='<%# Eval("Opis") %>' />
</td>
</tr>
<tr>
<td bgcolor="#CCFFCC">
<asp:HyperLink ID="HyperLink1" runat="server">...więcej...</asp:HyperLink>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
Przyisaniem wartości z bazy zajmuje się zdarzenie:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Image img1 = e.Item.FindControl("imgObraz") as Image;
Label lbl1 = e.Item.FindControl("lblDOd") as Label;
HiddenField hdf1 = e.Item.FindControl("hdfId") as HiddenField;
if (img1 != null) // WAŻNE sprawdzenie, bo bez tego błąd !!!
{
if (hdf1 != null) // WAŻNE sprawdzenie, bo bez tego błąd !!!
{
if (File.Exists(appPath + "/ObrazyArty/arty" + hdf1.Value + ".jpg"))
{
img1.ImageUrl = "/ObrazyArty/arty" + hdf1.Value + ".jpg";
}
else
{
img1.ImageUrl = "/ObrazyArty/arty0.jpg";
}
}
}
}
A teraz chciałbym w ItemDataBound zmienić kolor tła tych wierszy, gdzie nie istnieje obrazek na czerwony.
Czy muszę w każdej komórce umieszczać panel? To będzie ich aż 6.
Niestety nie da się zamiast
Efekt końcowy ma być jak np ogłoszenia wyróżnione.
Z góry dziękuje za pomoc.