¿Cómo puedo encontrar un control en la plantilla de pie de página de un repetidor de datos?
-
10-07-2019 - |
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
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");
}