Comprueba que está de esta manera:
Código:
<asp:DataList ID="dlMiLista" Runat="server" ...>
<HeaderTemplate>
<asp:Image id="imgFlechaOrden" ImageUrl="~/imagen/flechaArriba.gif" Runat="server"></asp:Image>
</HeaderTemplate>
....
</asp:DataList>
Código PHP:
If Me.dlMiLista.Controls(0).FindControl("imgFlechaOrden") Is Nothing Then
Dim img As Image = CType(Me.dlMiLista.Controls(0).FindControl("imgFlechaOrden"), System.Web.UI.WebControls.Image)
img.ImageUrl = Iif(img.ImageUrl.IndexOf("Arriba") = -1, img.ImageUrl.Replace("Abajo","Arriba"), img.ImageUrl.Replace("Arriba","Abajo"))
End If
Con la primera condición verificas que el control imgFlechaOrden realmente existe en la cabecera (índice 0 del DataList) y no te dará error en caso de que no lo encuentre (tampoco te lo cambiará, lógicamente).
Para verificar que efectivamente la cabecera está en el índice 0 del DataList puedes hacer esto:
Código PHP:
For i As Integer = 0 To Me.dlMiLista.Controls.Count -1
Response.Write(Me.dlMiLista.Controls(i).GetType.Name & " - " & Me.dlMiLista.Controls(i).ID & "<br>")
Next