Toon posts:

[C#] RowDeleting abort

Pagina: 1
Acties:

Verwijderd

Topicstarter
C#:
1
2
3
4
5
6
7
8
9
10
        void datatable_RowDeleting(object sender, DataRowChangeEventArgs e)
        {
            //Show delete warning.
            string message = "Do you want to continue?";
            if (MessageBox.Show(message, "Warning", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
            {
                //Cancel row deleting action.
                              
            }
        }


Hoe kan ik het deleten van een row afbreken in de RowDeleting eventhandler? De resultaten van Google geven niet echt een duidelijk antwoord.

  • DoDo
  • Registratie: Juli 2001
  • Laatst online: 21:38
Als het goed is zou je zoiets neer kunnen zetten.
C#:
1
e.Row.RejectChanges();


Na dit zal je waarschijnlijk de datagrid moeten refreshen, zodat alles weer geupdate word.
Laat even weten of het werkt

Verwijderd

Topicstarter
Bedankt, dat werkt perfect. Het refreshen van de tabel is inderdaad nodig.

C#:
1
2
3
                e.Row.RejectChanges();
                datatable.Clear();
                adapter.Fill(datatable);

Verwijderd

Niet, of tenminste niet simpel of netjes. Je bent dan nl. al ietsje te laat, en die keuzemogelijkheid ("weet u 't zeker?") had al eerder in je user interface moeten zitten.

Maar bij het OnRowDeleting event bestaat die row nog wel, en via de EventArgs kun je er ook nog bij, dus niets belet je om die row stiekem weer aan je datatable toe te voegen. Maar netjes is 't niet...

Edit: sh*t 't kan dus wel? My bad dat ik dat (DataRow.RejectChanges()) niet wist, maar ik doe dan ook niet zoveel met databinding. Weer wat geleerd! :)

[ Voor 17% gewijzigd door Verwijderd op 21-06-2007 22:41 ]


Verwijderd

Topicstarter
Ik zou de waarschuwing eerder in mijn user interface kunnen opnemen, mits ik van bijvoorbeeld een button gebruik maak om het updaten van de database in gang te zetten.

Ik werk echter met een datagridview, waarbij de gebruiker een rij kan verwijderen door deze te selecteren en op de Delete knop te drukken (de database moet worden geupdate zonder gebruik van een extra 'update' button). Ik roep dus zelf niet de OnRowDeleting method aan, maar ik heb een aantal eventhandlers toegevoegd.

code:
1
2
            datatable.RowDeleting +=new DataRowChangeEventHandler(datatable_RowDeleting);                
            datatable.RowDeleted +=new DataRowChangeEventHandler(datatable_RowDeleted);


Volgens mij is de RowDeleting eventhandler in mijn geval het enige juiste punt waar ik de waarschuwing kan plaatsen en het deleten kan stoppen.

Verwijderd

Bij een DataGridView is dat idd de beste (of minst slechte) plaats. Je zou eventueel ook nog de KeyDown of PreviewKeyDown af kunnen vangen, maar dat is in dit geval lood om oud ijzer...
Pagina: 1