J'ai écrit un contrôle utilisateur qui capture une entrée utilisateur et un bouton Enregistrer pour l'enregistrer dans la base de données. J'utilise un répéteur pour rendre un certain nombre de ces contrôles sur la page - imaginez une liste de questions à choix multiples avec un bouton Enregistrer pour chaque question.ASP.NET Bouton non enfoncé (bouton dans le contrôle utilisateur qui est chargé dynamiquement dans Répéteur)
Je chargeais le contrôle de l'utilisateur à l'intérieur de l'événement ItemDataBound de répéteur comme celui-ci (code simplifié):
Protected Sub rptAssignments_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rptAssignments.ItemDataBound
Dim CurrentAssignment As Assignment = DirectCast(e.Item.DataItem, Assignment)
Dim ctl As UA = CType(LoadControl("~\Controls\UA.ascx"), UA)
ctl.AssignmentID = CurrentAssignment.AssignmentID
ctl.Assignment = CurrentAssignment.AssignmentName
ctl.EnableViewState = True
e.Item.Controls.Add(ctl)
End Sub
Pour votre information, je dois charger le contrôle lors de l'exécution plutôt que de spécifier dans le ItemTemplate car un contrôle différent pourrait être utilisé pour chaque rangée.
Dans le contrôle de l'utilisateur, il y a une linkbutton comme ceci:
<asp:LinkButton ID="lbnUpdate" runat="server" Text="Update" OnClick="lbnUpdate_Click" />
... et un bouton clic handler comme ceci:
Protected Sub lbnUpdate_Click(ByVal sender As Object, ByVal e As EventArgs) Handles lbnUpdate.Click
' my code to update the DB
End Sub
Le problème est que lorsque le bouton Enregistrer est cliqué, la page affiche en arrière, mais lbnUpdate_Click n'est pas appelée. L'événement Page_Load de la page elle-même s'appelle cependant.
Je devrais mentionner que le répéteur fait partie d'un contrôle utilisateur, et que le contrôle utilisateur est chargé à l'intérieur d'un autre contrôle utilisateur (c'est un site DotNetNuke qui utilise intensivement les contrôles utilisateur). Le lien bouton Enregistrer ressemble à ceci:
javascript:__doPostBack('dnn$ctr498$AssignmentsList$rptAssignments$ctl04$ctl00$lbnUpdate','')
Yay! Je rebondis le répéteur dans l'événement Page_Init, et maintenant le clic sur le bouton se déclenche dans le contrôle chargé dynamiquement. Merci. – Laurence