Puoi usare l'evento ItemDataBound per scrivere codice più facilmente, invecie che scriverlo inline nel markup; inoltre tu hai il panel nell'header template, quindi quello che vuoi fare non può funzionare.
Dovresti mettere il panel per ogni riga.
codice:
<asp:Repeater ID="Repeater3" runat="server" DataSourceID="SqlDataSource4" OnItemDataBound="Repeater3_ItemDataBound">
...
...
<ItemTemplate>[*]
<asp:Panel ID="Panel3" runat="server" >
<span><%# Eval("FilmType")%></span>
</asp:Panel>
</ItemTemplate>
...
...
codice:
protected void Repeater3_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
DataRow drow = e.Item.DataItem as DataRow;
Panel pnl = e.Item.FindControl("Panel3") as Panel;
if (drow != null)
{
pnl.Visible = drow["FilmType"] != null;
}
}