Toon posts:

[VB.NET] Autopostback of niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb gezocht met de search (die volgens mij maar half werkt ofzo?) maar kon niet vinden wat mijn waarschijnlijk simpele probleem oplost :|

Ik ben een webapplication gestart en ben met VB aan het programmeren. Ik heb in het Webform een ListBox staan. Deze wordt gevuld door items die ik in een apart aangemaakte klasse in mijn project, in een arraylist heb staan. On page load wordt de ListBox inderdaad gevuld met deze items.
Nu wil ik graag dat ik in runtime op een item uit mijn ListBox kan klikken en dat dan dit item als string verschijnt in een TextBox die ook op mijn Webform staat. Ik heb nu dat autopostback enabled op die ListBox, maar dan wordt klaarblijkelijk de complete pageload opnieuw gedaan en dat heeft als gevolg dat ook mijn ListBox onderaan de items die er al instonden, weer dezelfde items toegevoegd krijgt! Da's niet de bedoeling offcourse...

Nu heb ik 2 vragen:
1. Algemeen over dat autopostback. Is het zo dat dan altijd de complete page met alle controls "gerefreshed" worden?
2. Ik hoef die hele autopostback in dit geval niet te gebruiken want alles wat er gebeurt kan gewoon client-side. Het enige dat er moet gebeuren is dat een ListBox-item als string in een TextBox komt. Geen serverside dingen voor nodig toch? Wat heb ik in dit geval dan nodig? Gewoon zoiets als "onclick listbox - maak string - past die in de textbox"? Hoe werkt dat onclick dan?
code:
1
2
3
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged

    End Sub

Het lijkt erop dat als ik de body van deze methode ga maken dat die ListBox niet echt iets lijkt te doen alsik erop klik... ?

[ Voor 3% gewijzigd door Verwijderd op 05-12-2002 16:06 ]


Verwijderd

Vraag 1: Yep, Microsoft vindt postback erg leuk. Daarmee hou je alle controle over de events op jouw site. Groot nadeel hiervan is dat je eigenlijk een supersnelle verbinding moet hebben. DUS, je kunt het ook overslaan. :)

Vraag 2:Hoe? Nou, door op een item in de listbox (in design-mode) te klikken, kan je een event aanmaken. Dit wil je dus niet. Je moet dus in de aspx-pagina een stukje javascript gaat zetten. Beetje klooien, maar dat lukt vast (ondanks de 'leuke' autom. naamgevingen).

Verwijderd

Topicstarter
In design mode staan er nog geen items in de listbox omdat die er pas runtime bij de page load ingezet worden..

Ohja en hoe kan het dat er onderaan het lijstje dat in mijn listbox staat weer dezelfde list wordt toegevoegd als ik dat autopostback wel gebruik? Moet ik er dan eerst steeds voor zorgen dat alle items gewist worden ofzo?

Ik heb net even een knop toegevoegd (die ook vanzelf autopostback doet) en als ik daarop druk in runtime, dan wordt dus ook mijn listbox opnieuw gevuld (AANgevuld dus) met dezelfde items die erin komen bij de page load. Kan ik dit op een of andere manier voorkomen?

EDIT

Ik heb het nu "opgelost" door in de pageload een if in te bouwen die controleert of er al items in de listbox staan en alleen de box te vullen als er nog niks in staat. Voelt wel quick and dirty maja :|

Ik snap echter nog niet goed hoe ik ZONDER een autopostback het voor elkaar krijg om een selected item uit een listbox als string in een tekstbox te krijgen. Dit moet toch zwaar simpel zijn? Die listbox lijkt niks te doen als ik er een item in aanklik...

[ Voor 110% gewijzigd door Verwijderd op 05-12-2002 16:41 ]


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 00:27

mulder

ik spuug op het trottoir

Jawel : javascript.

oogjes open, snaveltjes dicht


  • whoami
  • Registratie: December 2000
  • Laatst online: 09:56
Hoe je het goed moet oplossen:

Een Aspx web-page heeft een property IsPostBack. Met deze kun je gaan checken of de pagina voor de eerste keer ingeladen wordt, of als de pagina herladen wordt door een postback.

In de Page_Onload zet je dus het volgende:
code:
1
2
3
4
5
if( !IsPostBack )
{
    MyListBox.DataSource = myArrayList;
    MyListBox.DataBind();
}


Dan wordt de listbox niet meer ingeladen als de pagina herladen wordt doordat er een postback is gebeurd.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 09:56
Verwijderd schreef op 05 December 2002 @ 15:57:

Nu heb ik 2 vragen:
1. Algemeen over dat autopostback. Is het zo dat dan altijd de complete page met alle controls "gerefreshed" worden?
Ja. De pagina wordt volledig herladen. Alles wat in de Page load staat, wordt uitgevoerd (behalve als jij opgeeft dat het niet mag uitgevoerd worden bij een postback
2. Ik hoef die hele autopostback in dit geval niet te gebruiken want alles wat er gebeurt kan gewoon client-side. Het enige dat er moet gebeuren is dat een ListBox-item als string in een TextBox komt. Geen serverside dingen voor nodig toch? Wat heb ik in dit geval dan nodig? Gewoon zoiets als "onclick listbox - maak string - past die in de textbox"? Hoe werkt dat onclick dan?
code:
1
2
3
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged

    End Sub

Het lijkt erop dat als ik de body van deze methode ga maken dat die ListBox niet echt iets lijkt te doen alsik erop klik... ?


Neen, dan zul je het idd met JavaScript moeten doen.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Bedankt voor de antwoorden, nu kan ik een betere keuze maken om gedaan te krijgen wat ik wil. Dat ik Javascript moet gaan gebruiken als ik het op die ene manier wil is dat wel sucky vinnik :)
Pagina: 1