una paginar paginacion net hacer example ejemplo como asp c# asp.net repeater

c# - paginar - repeater asp net ejemplo



¿No puede encontrar el control dentro del repetidor asp.net? (5)

Tengo el siguiente repetidor a continuación y estoy tratando de encontrar lblA en el código detrás y falla. Debajo del marcado están los intentos que he hecho:

<asp:Repeater ID="rptDetails" runat="server"> <HeaderTemplate> <table> </HeaderTemplate> <ItemTemplate> <tr> <td><strong>A:</strong></td> <td><asp:Label ID="lblA" runat="server"></asp:Label> </td> </tr> </ItemTemplate> </asp:Repeater> </table>

Primero lo intenté,

Label lblA = (Label)rptDetails.FindControl("lblA");

pero lblA era nulo

Entonces lo intenté,

Label lblA = (Label)rptDetails.Items[0].FindControl("lblA");

pero los ítems eran 0 aunque m repetidor contiene 1 itemtemplate


Acabo de tener el mismo problema.

Nos falta el tipo de elemento mientras hacemos un bucle en los elementos. El primer elemento en el repetidor es el encabezado , y el encabezado no tiene los elementos asp que estamos buscando.

Prueba esto:

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {Label lblA = (Label)rptDetails.Items[0].FindControl("lblA");}


Código para VB.net

Protected Sub rptDetails_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rptDetails.ItemDataBound If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then Dim lblA As Label = CType(e.Item.FindControl("lblA"), Label) lblA.Text = "Found it!" End If End Sub


Debes atar primero.
por ejemplo)

rptDetails.DataSource = dataSet.Tables["Order"]; rptDetails.DataBind();



OnItemDataBound="myFunction" establecer el atributo OnItemDataBound="myFunction"

Y luego en tu código haz lo siguiente

void myFunction(object sender, RepeaterItemEventArgs e) { Label lblA = (Label)e.Item.FindControl("lblA"); }

Por cierto, puede utilizar este mismo enfoque para los repetidores anidados. ES DECIR:

<asp:Repeater ID="outerRepeater" runat="server" OnItemDataBound="outerFunction"> <ItemTemplate> <asp:Repeater ID="innerRepeater" runat="server" OnItemDataBound="innerFunction"> <ItemTemplate><asp:Label ID="myLabel" runat="server" /></ItemTemplate> </asp:Repeater> </ItemTemplate> </asp:Repeater>

Y luego en su código:

void outerFunction(object sender, RepeaterItemEventArgs e) { Repeater innerRepeater = (Repeater)e.Item.FindControl("innerRepeater"); innerRepeater.DataSource = ... // Some data source innerRepeater.DataBind(); } void innerFunction(object sender, RepeaterItemEventArgs e) { Label myLabel = (Label)e.Item.FindControl("myLabel"); }

Con demasiada frecuencia, veo personas que unen elementos manualmente en un repetidor interno y no se dan cuenta de lo difícil que son hacer las cosas por sí mismos.