Asp.Net die Schaltfläche click-Ereignis im inneren Repeater in UpdatePanel
Ich bin versucht, einen Repeater innerhalb eines Updatepanel und Schaltflächen, die löschen einen entery in der Datenbank und erhalten die neuen Daten für den Repeater und Aktualisieren Sie die Systemsteuerung. Ich habe versucht ein LinkButton, aber es funktioniert immer postback der Seite relodes. Dann habe ich versucht, eine regelmäßige Schaltfläche, und erstellen Sie ein Ereignis für die Schaltfläche auf Datenbindung Veranstaltung. Aber es funktioniert nicht. Hier ist der code:
aspx-Datei:
<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>
und in der code-behind-ich gebe die Schaltfläche mit der id = test ein Ereignis
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";
}
also was ist die Arbeit vorbei ist der Text und die ID-Nummer auf jeder Taste so. Aber die Tasten haben keine Click-Ereignis zu nennen deleteMeldung()
InformationsquelleAutor Jodo | 2014-09-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was ich eher zu tun ist, um ein separates löschen-button außerhalb der repeater (dieser ist in der Regel asp:Button mit Stil auf 'display:none' zusammen mit einem versteckten Feld. Nennen wir diese B_Delete und HF_DeleteId.
Die Knöpfe innerhalb der repeater nicht Ursache postback sich selbst, aber Sie stellen nur die ID der Zeile, um das versteckte Feld HF_DeleteId, und dann rufen Sie $('#B_Delete').klicken Sie auf() (in der B_Delete sollte ersetzt werden, mit aktuellen ClientID der Taste). Dann in die server-Methode B_Delete_Click Sie abrufen können, die ID der Zeile, die gelöscht werden aus dem versteckten Feld. Funktioniert mit update-panels kein problem. Keine Notwendigkeit zu Chaos mit Triggern und verarbeiten von Ereignissen von dynamisch generierten buttons.
Kann es so Aussehen:
Und die server-Methoden:
InformationsquelleAutor Pafka
versuchte ich Pafkas Lösung und es hat funktioniert, vielen Dank dafür. Allerdings war ich intressted, wenn es irgendeine andere Möglichkeit dieses problem zu lösen und ich eine andere Lösung gefunden, ich registrierte jede LinkButton mit der ScriptManager so:
und mit diesem link button :
es funktioniert, ist es feuerte die deleteMeldung Methode ohne reloding und übergeben die parameter meldungId zum löschen der enterie und updates die neuen Daten an das UpdatePanel
InformationsquelleAutor Jodo