Confirm Delete per Javascript in GridView mit CommandField im _RowDeleting-Ereignis

17/07/2008 - 10:44 von Paul Aeschlimann | Report spam
Hallo

Ich suche eine Möglichkeit, mit einem CommandField eine
Löschbestàtigung mit Javascript aufzurufen. Ich hab schon einige
Beispiele gefunden, leider konnte ich noch keines bei meinem Beispiel
erfolgreich anwenden. Hier einmal das CommandField

<asp:CommandField ShowDeleteButton="True" ItemStyle-Width="50"
ItemStyle-VerticalAlign="Top" DeleteImageUrl="~/
Images/loeschen.png"
EditImageUrl="~/Images/bearbeiten.png"
UpdateImageUrl="~/Images/speichern.png" ButtonType="Image">
</asp:CommandField>

Im RowDeleting-Ereignis des GridViews möchte ich nun diese
DeleteConfirm-Nachricht einbauen. Das Ereignis enthàlt folgenden Code:

protected void GridNews_RowDeleting(object sender,
GridViewDeleteEventArgs e)
{
BindGrid();
DataSet dataset = new DataSet();

dataset = (DataSet)GridNews.DataSource;

dataset.Tables[0].Rows[GridNews.Rows[e.RowIndex].DataItemIndex].Delete();
dataset.WriteXml(Request.PhysicalApplicationPath + filename);

BindGrid();
}

Die Nachricht soll natürlich vor der Delete()-Methode aufgerufen
werden. Ich habe zwar dieses (http://forums.asp.net/p/
972930/1358433.aspx) Beispiel gefunden, doch ich möchte diese
Nachricht ja im RowDeleting- und nicht im RowDataBound ausführen. Und
als Parameter GridViewRowEventArgs eingeben geht natürlich auch nicht
einfach so.

Hoffe Ihr könnt mir helfen. Besten Dank schon mal!

Grüsse
Paul
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
17/07/2008 - 11:08 | Warnen spam
Hallo Paul,

"Paul Aeschlimann" schrieb:

Im RowDeleting-Ereignis des GridViews möchte ich nun diese
DeleteConfirm-Nachricht einbauen.



warum dort? Ist dort eigentlich schon zu spàt bzw. unnötig.
Du willst die Rückfrage clientseitig per JavaScript stellen.
Dafür solltest Du im RowDataBound Event den entsprechenden
JavaScript Code ausgeben.

Die Nachricht soll natürlich vor der Delete()-Methode aufgerufen
werden.



Dann müsstest Du aber einen weiteren Roundtrip zum Server durchführen
und alles nochmal durchlaufen. In einem Rutsch kann das nicht gehen,
weil das RowDeleting Ereignis serverseitig ablàuft, Du dann erstmal
den JavaScript zusammenstellen, zum Client senden und beim nàchsten
Aufruf die eigentliche Löschung durchführen müsstest.

Ich habe zwar dieses (http://forums.asp.net/p/
972930/1358433.aspx) Beispiel gefunden, doch ich möchte diese
Nachricht ja im RowDeleting- und nicht im RowDataBound ausführen.



Was aber falsch wàre. Nimm das Beispiel, das passt schon so. Im
RowDataBound Ereignis wird ja lediglich der Code zusammengestellt,
der dann im Browser dafür sorgt, dass bei einem Klick auf "Löschen"
die entsprechende Abfrage kommt und nur, wenn dort Ok geklickt wird,
wird der Postback zum Server ausgelöst.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen