Asp.Net l'Événement clic du Bouton à l'intérieur de Répétition à l'intérieur de UpdatePanel
Je suis en train d'utiliser un Répéteur à l'intérieur d'un Updatepanel et ont des Boutons qui supprimer un entery dans la Base de données et obtenir les nouvelles Données de la Répétition et de mettre à Jour le Panneau. J'ai essayé un LinkButton, mais il le fait toujours de publication et la page relodes. Ensuite, j'ai essayé un Bouton habituel et de créer un Événement pour que le Bouton sur lié aux données de l'Événement. Mais il ne marche pas. Voici le code:
aspx fichier:
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel runat="server" id="Panel">
<ContentTemplate>
<table cellpadding="0" cellspacing="0" id="saveTable">
<tr style="font-weight: bold;">
<td>Erstellt am</td>
<td>Anforderer</td>
<td>Werk</td>
<td>Gebäude</td>
<td>Start Datum</td>
<td>Löschen</td>
<td>Benutzen</td>
</tr>
<asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound">
<ItemTemplate>
<tr id="Meldung<%# DataBinder.Eval(Container.DataItem,"meldungId")%>">
<td><%# DataBinder.Eval(Container.DataItem, "timestamp").ToString().Substring(0, 10)%></td>
<td><%# DataBinder.Eval(Container.DataItem,"nameAnforderer") %></td>
<td><%# DataBinder.Eval(Container.DataItem,"Werk") %></td>
<td><%# DataBinder.Eval(Container.DataItem,"Building") %></td>
<td><%# DataBinder.Eval(Container.DataItem,"startDatum").ToString().Substring(0, 10) %></td>
<td>
<asp:Button runat="server" ID="test"/>
</td>
<td></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</ContentTemplate>
</asp:UpdatePanel>
et dans le code derrière, j'ai donner le Bouton id = test d'un événement
protected void deleteMeldung(object sender, EventArgs e) {
System.Threading.Thread.Sleep(5000);
}
protected void Repeater1_ItemDataBound(object source, RepeaterItemEventArgs e) {
RepeaterItem repeaterSource = e.Item;
Button btn1 = repeaterSource.FindControl("test") as Button;
DataRowView drv = e.Item.DataItem as DataRowView;
string meldungId = drv.Row["meldungId"].ToString();
btn1.ID = "myNewButton"+meldungId;
btn1.Click += new EventHandler(deleteMeldung);
btn1.Text = "delete";
}
donc, ce travail est le passage du Texte et de l'ID de chaque bouton comme ça. Mais les Boutons n'ont pas l'Événement de Clic pour appeler deleteMeldung()
OriginalL'auteur Jodo | 2014-09-22
Vous devez vous connecter pour publier un commentaire.
Ce que j'ai tendance à faire est d'avoir un bouton supprimer en dehors de la répétition (ce qui est généralement asp:Button avec style défini à 'display:none' avec un champ caché. Appelons ces B_Delete et HF_DeleteId.
Les boutons à l'intérieur de la répétition ne causent pas de publication eux-mêmes, mais ils ne réglez l'ID de la ligne de donnée pour le champ caché HF_DeleteId, et ensuite appeler $('#B_Delete').cliquez sur() (où le B_Delete doit être remplacé avec de l'actuel ClientID du bouton). Ensuite, dans la méthode de serveur B_Delete_Click vous pouvez récupérer l'ID de la ligne à être supprimés à partir du champ caché. Fonctionne avec la mise à jour des panneaux pas de problème. Pas besoin de jouer avec les déclencheurs et la gestion des événements de généré dynamiquement boutons.
Il peut ressembler à ceci:
Et les méthodes de serveur:
OriginalL'auteur Pafka
j'ai essayé Pafkas solution et cela a fonctionné, je vous remercie pour cela. Cependant, j'ai été intressted si il y a une autre façon de résoudre ce problème et j'ai trouvé une autre solution, j'ai enregistré tous les LinkButton avec le ScriptManager comme ça:
et avec ce bouton lien :
il a travaillé, il a tiré la deleteMeldung méthode sans reloding und passé le paramètre meldungId pour supprimer le enterie et les mises à jour de nouvelles Données à l'UpdatePanel
OriginalL'auteur Jodo