Impossibile ottenere Label.text in ASP.Net Repeater utilizzando FindControl
-
26-09-2019 - |
Domanda
posso accedere al testo all'interno di una casella di testo nel mio ripetitore, ma sono in grado di tirare il valore di testo da un'etichetta all'interno del mio ripetitore. Il ripetitore è popolato da un datatable con la riga (x) essendo riempito da sqlreader (x), non so se questo fa la differenza. Non posso usare javascript per questo. Ho bisogno di accedere al valore etichetta dal codebehind.
<asp:label id="weiLabel" runat="server">
<%#DataBinder.Eval(Container, "DataItem.weiLabel")%>
</asp:label>
è il markup
I può accedere a una casella di testo sulla stessa riga utilizzando:
featTable.Controls(1).Controls(1).FindControl("costText")
e recuperare il TextBox.Text, ma utilizzando la stessa dichiarazione per l'etichetta mi dà {text = ""}.
Ho verificato che l'IDcliente di controllo che viene restituito con FindControl è corretto (featTable__ctl1_weiLabel)
Grazie per qualsiasi aiuto
Soluzione
Puoi provare dichiarando l'etichetta in questo modo:
<asp:label id="weiLabel" runat="server" Text='<%#DataBinder.Eval(Container, "DataItem.weiLabel")%>' / >
Altri suggerimenti
Si può anche provare a mettere in valore nella vostra etichetta dal codice dietro utilizzando il metodo databound. Lo trovo un po 'più facile per eseguire il debug e più pulita poi metterlo in html
Private Sub repPoliList_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles repPoliList.ItemDataBound
If (e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem) Then
Dim dr As DataRowView = CType(e.Row.DataItem, DataRowView)
Dim weiLabel As System.Web.UI.WebControls.Label= CType(e.Item.FindControl("weiLabel"), System.Web.UI.WebControls.Label)
weiLabel.text= dr("ColumnFromDatabase").toString
End If
End Sub