[ASP .NET] Forms: ListBox vullen met DropDownList

Pagina: 1
Acties:

  • dixon
  • Registratie: Januari 2001
  • Laatst online: 01-01 21:15
Ik heb een aantal verschillende methodes geprobeerd. Client sided, Server sided, Postback en Sessies, ik word helemaal gek :)

Server sided only:
Bij de page_load wordt de DropDownList opgevuld met gegevens uit een database. Nu wil ik dus 1 voor 1 Items uit de DropDownList selecteren en toevoegen in de LB. Het eerste probleem hierbij was de page_load (en postback?) die elke keer eerst geschiet voordat de handler (van btnAddItem) wordt uitgevoerd. Hierdoor is de ListBox elke keer zijn Items collection kwijt en kan er dus maximaal 1 item in toegevoegd worden.

+Sessies:
Wat heb ik nu gedaan, in de page_load een check of sessie variable bestaat (collection van items), zoja de Listbox eerst vullen met die sessie variabele, dan wordt de btnAddItem uitegevoerd, (of de submit natuurlijk) en dan het item toegevoegd bij de sessie variabele, en door de btnAddItem komt er weer een page load, die ziet de sessie variabele, lijst opvullen, en tada, het werkt. 3 Nadelen:
- elke keer 2 page loads
- sessie variabele (vervalt op gegeven moment ook weer, geen ramp, wel vervelend)
- en de laatste, de ergste, alle andere ingevulde textvakken worden weer leeggegooid, wat ik ook vrij onlogisch vind, maar hier moet ik nog goed naar kijken.

Client sided & server sided:
Dit leek mij (behalve dan de ietswat omslachtige manier van opbouwen) nog de beste manier. Client sided de listbox vullen en deze weer server sided opvragen. De DropDownList (oftewel <select size="1">) wordt dynamisch opgebouwd en toegevoegd aan de pagina, en is client sided. De pagina bevat een javascript om de ListBox die wel server sided is op te vullen met gegevens uit de DropDownList. Gaat snel, want het is client sided. Maar doe ik nu de Submit button, en er komt weer een page load, vind ie de items niet die ik in de ListBox (client sided naar een server sided control dus) heb toegevoegd, wat ik vreemd vind omdat ie die mee zou moeten sturen met een postback, lijkt me.


Ik heb nog van alles geprobeerd, en ben al goed aan het zoeken op google, maar al dit soort dingen moeten toch in .NET automatisch goed geregeld worden? Weet iemand hoe? Zijn er meer mensen die problemen hebben met dit soort dingen? Goed, de enigste werkende manier is bij mij dus met sessie variabele, maar dit wil ik niet.

Wat een onzin..


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:25
code:
1
2
3
4
5
if( !IsPostback )
{
    // laad de dropdown in
    // maak de listbox leeg
}


code:
1
2
3
4
5
btnAddItem_Click( object sender , EventArgs e )
{
    // voeg item toe aan LB
    // verwijder item uit DL
}


Maar, is er een reden waarom je het niet volledig client-side doet ?

[ Voor 14% gewijzigd door whoami op 14-05-2004 11:03 ]

https://fgheysels.github.io/


  • dixon
  • Registratie: Januari 2001
  • Laatst online: 01-01 21:15
Ehm, de inhoud van de listbox die je opvult moet in asp .net codebehind weer opgevraagd kunnen worden en in een database toegevoegd. Kan wel client sided controls dynamisch opbouwen, maar hoe krijg ik die gegevens dan terug in asp .net codebehind?

Volgens mij op de manier dat jij het nu beschrijft, is die listbox elke keer weer leeg, dus kan ik hooguit 1 item toevoegen?

[ Voor 21% gewijzigd door dixon op 14-05-2004 11:09 ]

Wat een onzin..


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:25
Volgens mij op de manier dat jij het nu beschrijft, is die listbox elke keer weer leeg, dus kan ik hooguit 1 item toevoegen?
En waarom denk je dat , want dat is niet zo.

tip: ! IsPostback

[ Voor 9% gewijzigd door whoami op 14-05-2004 11:11 ]

https://fgheysels.github.io/


  • dixon
  • Registratie: Januari 2001
  • Laatst online: 01-01 21:15
:) Oke, ik maak een nieuwe pagina om het te testen, deze is vrij rommelig geworden ondertussen.
Ik had dit natuurlijk als eerste geprobeerd op die manier , en toen was elke keer me Items = nothing and count ook 0... Maar goed, ik ga het weer proberen misschien deed ik iets fout.

Wat een onzin..


  • dixon
  • Registratie: Januari 2001
  • Laatst online: 01-01 21:15
Nou, bij btnAddItem_Click staat nu
DropDowList.Items.Add(ListBox.SelectedItem)
en dan is ListBox.SelectedItem = Nothing. <-- typo moment!!!

' geld ff niet meer:
Terwijl ie op de pagina gewoonn gevuld is en er is er altijd 1 geselecteerd.

Ik weet nu ook weer waarom ik het niet op deze manier wou doen met page load. Er staan meer dynamische dingen op die site, die met page_load niet goed omgaat, kan het nu even niet uitleggen. Iig ik denk dat het toch client sided moet worden. Dan wordt alleen de truck om de gegevens weer binnen te halen?

[ Voor 5% gewijzigd door dixon op 14-05-2004 11:29 ]

Wat een onzin..


  • dixon
  • Registratie: Januari 2001
  • Laatst online: 01-01 21:15
Ik draaide de listbox en de combobox (dropdownlist) om. Sorry.

JA! Het werkt!! Waarom nu wel? Ach ja.

Thanks :)

Wat een onzin..

Pagina: 1