[ASP.NET] Geselecteerde checkboxes opslaan in database

Pagina: 1
Acties:

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 17:05
Ik zit met een klein probleempje, ik heb een checkboxlist op m'n pagina staan, + nog een paar textvelden. Deze worden ingevuld en moeten opgeslagen in de database. Ik vraag me nu af wat de beste manier is om de geselecteerde checkboxes op te slaan in de database. Ik zat zelf te denken:
1.
C#:
1
2
3
4
5
6
7
foreach(ListItem li in standardModuleList.Items)
{
    if(li.Selected == true)
    {
        // Stored procedure om de waarde op te slaan
    }
}
2.
C#:
1
2
3
4
5
6
7
8
foreach(ListItem li in standardModuleList.Items)
{
    if(li.Selected == true)
    {
        // kommagescheiden string maken met id's (1,4,6,7)
    }
}
//Stored procedure aanroepen om de kommagescheiden string weer uit elkaar te trekken en op te slaan
Ik vind beide manieren niet echt mooi eigenlijk. Wat is volgens jullie de beste manier? Of zijn er nog andere?

Roomba E5 te koop


  • Stewie!
  • Registratie: September 2001
  • Laatst online: 10:07

Stewie!

Keen must die!

Kan veel makkelijker :)
Ik zal de code wel posten als ik m bij de hand heb (vanavond denk ik)


Strava: https://www.strava.com/athletes/149347154


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 17:05
Ik ben benieuwd...

Roomba E5 te koop


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 18-08 10:07

Not Pingu

Dumbass ex machina

Een boolean/bit veld in je database?

Wat je ook kunt doen, mits je meerdere checkboxes op een pagina hebt, is de beproefde bitvolgorde manier: per checkbox een veelvoud van 2 als ID, tel de ID's van de geselecteerde checkboxes bij elkaar op.

Checkbox 1 Aan
Checkbox 2 Uit
Checkbox 4 Aan
Checkbox 8 Uit
Checkbox 16 Aan

Levert het getal 21 op, en onload van de pagina kun je dan een functie aanroepen die van hoog naar laag per checkbox het ID van het getal aftrekt. als je na die aftreksom meer dan 0 overhoudt betekent dat dat de checkbox geselecteerd is.

Dus:
21 - 16 = 5 > 0 --> Checkbox16 is geselecteerd
5 - 8 = -3 < 0 --> Checkbox 8 is niet geselecteerd
5 - 4 = 1 > 0 --> Checkbox 4 is geselecteerd
etc..

beetje omslachtig misschien maar dit werkt goed voor grote pagina's.

[ Voor 13% gewijzigd door Not Pingu op 14-11-2003 17:32 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
Als je een comma-separated string maakt, heb je als voordeel dat je slechts 1x naar de databank hoeft te gaan.
Deze optie heeft mijn voorkeur als je tussen beide opties twijfelt.

https://fgheysels.github.io/


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 17:05
Ja dat dacht ik zelf ook. Ik wacht de optie van DaMorpeus nog even af.

Roomba E5 te koop


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 18-08 10:07

Not Pingu

Dumbass ex machina

bij de optie die ik noemde is het bijkomende voordeel dat je het in een integer kan opslaan ipv. een string, wat handig is als zoiets vaak voorkomt.

Certified smart block developer op de agile darkchain stack. PM voor info.


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
Gunp01nt schreef op 14 november 2003 @ 21:56:
bij de optie die ik noemde is het bijkomende voordeel dat je het in een integer kan opslaan ipv. een string, wat handig is als zoiets vaak voorkomt.
Het probleem van jouw oplossing is dat ze niet doorzichtig is en moeilijk onderhoudbaar is.

https://fgheysels.github.io/


  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 19:01
kan je in die foreach loop niet een SQL bouwen? en die dan buiten de loop uitvoeren? Lijkt me stukje efficienter als wat de TS laat zien.

[ Voor 5% gewijzigd door Ramon op 15-11-2003 00:05 ]

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
Tampie schreef op 15 november 2003 @ 00:05:
kan je in die foreach loop niet een SQL bouwen? en die dan buiten de loop uitvoeren? Lijkt me stukje efficienter als wat de TS laat zien.
Dat bedoeld ie dus met z'n comma-separated file. De string opbouwen binnen de foreach, en dan daarbuiten de SQL uitvoeren.

https://fgheysels.github.io/


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 17:05
Waar blijft DaMorpheus met zijn oplossing dan?

Roomba E5 te koop

Pagina: 1