Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[ASP.NET / VB] Checklistbox update checked items

Pagina: 1
Acties:

  • Remco
  • Registratie: Januari 2001
  • Laatst online: 14:56
Ik heb een checklistbox waarin ik aangeef of iemand lid is van een aantal items, of juist niet.
Door aan of uit te vinken word men ergens lid van.
Na het aan of uit vinken dient de stand bewaard te worden in een database (SQL).
Nu is mijn vraag, hoe doet men een update.
Ikzelf dacht:
- Alle invoer van de gebruiker weggooien uit de tabel
- Checklistbox doorlopen op checked items
- Checkeditems inserten in tabel

Heeft iemand hier andere ideeën over?
Ik vind het eerst weggooien van alle rows een beetje rigoreus.

The best thing about UDP jokes is that I don't care if you get them or not.


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Even de puur HTML (even geen viewstate) oplossing. Checkboxen welke niet worden aangevinkt worden niet in de formulier post opgenomen. Normaal gesproken weet je dus niet dat iemand een vinkje heeft weggehaald. Daarom worden meestal alle koppelingen verwijderd en daarna de geselecteerde weer aangemaakt.

Echter in .NET heb je de viewstate en daarmee kun je de 'state' bewaren. Je kunt ook zelf objecten toevoegen aan de Viewstate op page niveau (page inherits van control) zoals een DataSet.
code:
1
Viewstate.Add("LinkTable", ds.Tables[0]);


Vervolgens kun je na de postback de tabel weer uit de viewstate halen en vervolgens updaten op basis van de checkboxlist. Vervolgens kun je een DataAdapter configuren welke de gewijzigde records wegschrijft naar de database. Elke row in de datatable heeft namelijk ook een RowState en de DataAdapter zal op dat moment alleen deletes en inserts uitvoeren (uitgaand van een simpele koppeltabel).

Ook Linq To Sql heeft een aantal leuke trucjes. Maar het toverwoord voor jouw is denk ik toch wel Viewstate. Verdiep je maar eens in de viewstate.

If it isn't broken, fix it until it is..


  • Remco
  • Registratie: Januari 2001
  • Laatst online: 14:56
Tnx, ik ga daar eens naar kijken.

The best thing about UDP jokes is that I don't care if you get them or not.


  • Razr
  • Registratie: September 2005
  • Niet online
Door je collectie van checkboxen lopen is ook gewoon mogelijk:

C#:
1
2
3
4
5
6
7
foreach (ListItem item in lijst.Items)
{
  if (item.Selected)
  {
    //we hebben een vinkje
  }
}

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Razr schreef op dinsdag 25 maart 2008 @ 22:41:
Door je collectie van checkboxen lopen is ook gewoon mogelijk:
Ja, maar dan weet je nog steeds niet of de selectie van een item is aangepast en moet je nog steeds per item een update naar de database doen, of eerst alle koppelingen weggooien en daarna de geselecteerde weer inserten.

De vraag was juist of er een andere methode was. LinqToSql en de DataSet houden beide intern een state per record bij en weten dus precies wat ze moeten updaten in de database. Dat betekend dat als je niets wijzigt op het formulier, maar wel submit er geen database wijzigen plaats vinden.

If it isn't broken, fix it until it is..