Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASPX (.net) (http://www.forosdelweb.com/f78/)
-   -   Acceso a elementos del HeaderTemplate en Datalist (http://www.forosdelweb.com/f78/acceso-elementos-del-headertemplate-datalist-569084/)

danybarco 25/03/2008 11:23

Acceso a elementos del HeaderTemplate en Datalist
 
Pues eso, estoy intentando acceder a elementos que tengo dentro del headertemplate de un datalist pero no encuentro la forma. En concreto quiero cambiar el src de un elemento img que me ordena el datalist ascendente o descendente, en funcion de la ordenacion mostrara un icono u otro.

Bravenap 26/03/2008 01:15

Re: Acceso a elementos del HeaderTemplate en Datalist
 
La plantilla de cabecera de una datalist es el control de índice 0 en la colección de controles, por lo que yo lo que hago es recorrer los controles contenidos en el control 0 y comprobar si es el que quiero modificar. Por ejemplo:

Código PHP:

For Each c As Control In Me.dlMiLista.Controls(0).Controls
  Select 
Case c.ID
    
Case "imgFlechaOrden"
      
Dim img As Image CType(cImage)
      
img.ImageUrl ruta
  End Select
Next 

Me imagino que también puede funcionar si buscas directamente el control con FindControl() dentro de Me.dlMiLista.Controls(0).

Un saludo.

danybarco 26/03/2008 03:06

Re: Acceso a elementos del HeaderTemplate en Datalist
 
Pues creo que no va, lo he intentado como me has dicho, y nada. tambien he cambiado el tipo de objeto en el codigo ya que usaba un img y no un asp:image, tambien al reves, es decir, dejando tu codigo y poniendo un asp:image.

He tratado tb de encontrar el control con el findcontrol directamente y me da un error al intentar referenciar el control, ya que no lo debe encontrar.

Bravenap 26/03/2008 05:32

Re: Acceso a elementos del HeaderTemplate en Datalist
 
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") = -1img.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 As Integer 0 To Me.dlMiLista.Controls.Count -1
  Response
.Write(Me.dlMiLista.Controls(i).GetType.Name " - " Me.dlMiLista.Controls(i).ID "<br>")
Next 


danybarco 26/03/2008 06:33

Re: Acceso a elementos del HeaderTemplate en Datalist
 
Ok, con esto funciono, salvo por un detalle, al comprobar si existe o no el objeto debemos poner:
If Not (Condicion) Is Nothing Then

Muchas gracias por la ayuda

Bravenap 26/03/2008 06:55

Re: Acceso a elementos del HeaderTemplate en Datalist
 
Es verdad, siempre me como el Not


La zona horaria es GMT -6. Ahora son las 10:02.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.