¿Cómo puedo encontrar un control en la plantilla de pie de página de un repetidor de datos?

StackOverflow https://stackoverflow.com/questions/1822448

Pregunta

ASPX: Código

  

<asp:repeater id="repeater" runat="server">

     

<headerTemplate></headerTemplate>

     

<itemtemplate></itemtemplate>

<footerTemplate> <asp:literal id=findme runate=server> </footerTeplate>

  

</asp:repeater>

Lo que estoy buscando es el código fuente para poder encontrar el control dentro del pie de página de un repetidor de datos. Estoy familiarizado con el & Quot; FindControl & Quot; cuando hago un enlace de datos o busco control dentro de la página, pero ¿cómo puedo encontrar el control dentro de una plantilla de pie de página de un repetidor de datos?

¿Es esto posible? y si es así, ¿cómo puedo obtener ayuda?

¡gracias de nuevo a todos!

[actualización]

necesito poder hacer esto después del enlace de datos

¿Fue útil?

Solución

Protected Sub Repeater1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemDataBound
    If e.Item.ItemType = ListItemType.Footer Then
        Dim Lit As Literal = CType(e.Item.FindControl("findme"), Literal)
    End If
End Sub

Otros consejos

Hay varias formas de hacerlo, la forma exacta depende de cuándo desea obtener acceso al control.

Si lo desea durante DataBind, simplemente haga lo siguiente dentro del elemento Databound.

if(e.Item.ItemType == ItemType.Footer)
{
    Literal findMe = (Literal)e.Item.FindControl("findMe");
    //Your code here
}

Si desea encontrarlo en otro momento, acceda a la colección de elementos del repetidor, luego busque " Footer " elemento, y desde ese elemento, puede encontrar el control.

Update

Según su nota agregada, puede hacer esto enumerando la colección de elementos, a continuación se muestra un ejemplo con un repetidor que tiene una identificación de myRepeater.

foreach (RepeaterItem item in myRepeater.Items)
{
    if (item.ItemType == ListItemType.Footer)
    {
        Literal findMe = (Literal)item.FindControl("findMe");
        //Do your stuff
    }
}

Creo que debe verificar ListItemType en un controlador de eventos ItemDataBound. Puede verificar el Encabezado o el Pie de página y luego usar el método FindControl para acceder al control.

Foreach (RepeaterItem item in myRepeater.Controls)

Esto funcionará mejor ya que la colección de elementos no contiene encabezado y pie de página

Si necesita obtener el pie de página después de DataBind (que es lo que parece que quiere el OP), puede usar lo siguiente:

RepeaterItem item= (RepeaterItem)myRepeater.Controls[myRepeater.Controls.Count - 1];
if (item.ItemType == ListItemType.Footer) {
    Literal findMe = (Literal)item.FindControl("findMe");
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top