Toon posts:

[C# .NET] Remove Laatste Rij BindingSource / DataGridView

Pagina: 1
Acties:

Onderwerpen


  • Davio
  • Registratie: november 2007
  • Laatst online: 13-07 14:13
Ik heb een probleem met een bindingsource en een datagridview waardoor ik de laatste rij niet kan verwijderen.
Mijn DataGridView heeft AllowUserToAddRows op false en AllowUserToDeleteRows op false. Er is dus geen virtuele rij met zo'n sterretje ervoor en deleten kan alleen met een button.

De boel is als volgt gekoppeld:
C#:
1
2
3
4
5
6
7
8
// Context is een LINQ to SQL context
this.jobBindingSource.DataSource = context.Jobs;
this.dataGridViewJobs.DataSource = this.jobBindingSource;

// Ik heb een verwijder button met de volgende code daarin:
// Hij checkt eerst of current null is, zo ja, dan toont hij een warning en returnt hij, vervolgens:
this.jobBindingSource.RemoveCurrent();    
context.SubmitChanges();


Dit werkt dus voor elke rij behalve de laatste, dan geeft hij de volgende error:
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll

Additional information: DataBinding cannot find a row in the list that is suitable for all bindings.
Ik heb op de MSDN gelezen dat dit kan komen doordat de index van Current kleiner dan 0 is (is bij mij precies 0, laatste rij immers), of doordat de count 0 of kleiner is (is 1 bij mij) of dat AllowDelete van de bindingsource op false staat (staat bij mij op true).

Ik zit inmiddels met mijn handen in het haar, iemand enig idee?

  • Davio
  • Registratie: november 2007
  • Laatst online: 13-07 14:13
Laat ik maar weer antwoord geven op mijn eigen vraag voor overige hulpelozen die hier terechtkomen.

Mijn probleem was dat ik twee DatePickers op mijn form had die ook gebound waren aan de BindingSource. Deze DatePickers kunnen niet met de Value null omgaan die klaarblijkelijk gezet wordt als het laatste item wordt verwijderd, daarom heb ik het volgende gedaan nav een tip op internet:

C#:
1
2
3
4
5
// Goed
this.dateTimePicker.DataBindings.Add("Text", this.jobBindingSource, "Starttime");

// Fout
this.dateTimePicker.DataBindings.Add("Value", this.jobBindingSource, "Starttime");


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee