Toon posts:

[C#]CheckBoxList

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik heb een probleem met me checkboxlist onder C#. Als ik runtime wil uitlezen als er op een item geclickt wordt(van de checkbox) genereerd hij geen event? Ik dacht dat als je een item aanvinkt, de SelectedIndexChanged event wordt getriggerd. Dit blijkt om de 1 of andere reden niet zo te zijn? Iemand enig idee waar dit aan kan liggen?
dus gewoon een:
private void RatingCheckBoxList1_SelectedIndexChanged(object sender, System.EventArgs e)
{
rateTst.Text = "stat3";

}

hij komt dus nooit de functie in?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 22-08 10:45

mulder

ik spuug op het trottoir

Als je die handler ook aan je checkboxlist hebt gehangen zou het idd moeten werken.

[ Voor 3% gewijzigd door mulder op 23-06-2003 13:06 ]

oogjes open, snaveltjes dicht


  • St-Bun
  • Registratie: November 2000
  • Laatst online: 18-08 09:51
Als je een item wijzigt bij een checked listbox wordt het ItemCheck event getriggerd.
CheckedListBox1.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(ItemCheckedChanged);

O dus


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Heb je het hier over web- of winforms?

Als het over webforms gaat (ASP.NET dus), dan zal deze event 'gecached' worden, en pas uitgevoerd worden als er een andere event getriggered wordt die voor een Postback zorgt.
Je kan er echter ook voor zorgen dat die SelectedIndexChanged event-handler ook een postback-event veroorzaakt. Dit kan je doen door de 'AutoPostback' property van die CheckListBox op True te zetten.

Dit zorgt er dan wel voor dat, iedere keer de index veranderd wordt, er een round-trip naar de server gebeurt. Dit zal dus de performance enzo niet bevorderen.

[ Voor 88% gewijzigd door whoami op 23-06-2003 13:11 ]

https://fgheysels.github.io/


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Je zou toch ook de property checked kunnen gebruiken om te kijken of een checkbox is aangevinkt :?
Visual Basic .NET:
1
2
3
Dim CheckBox1 as New CheckBox ()
Dim IsChecked as Boolean
IsChecked = Checkbox1.Checked

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
DeverauX schreef op 23 June 2003 @ 13:09:
Je zou toch ook de property checked kunnen gebruiken om te kijken of een checkbox is aangevinkt :?
Visual Basic .NET:
1
2
3
Dim CheckBox1 as New CheckBox ()
Dim IsChecked as Boolean
IsChecked = Checkbox1.Checked
Het gaat over een CheckBoxList, en niet over een CheckBox.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

In het geval van ASP.Net: Je moet wel de AutoPostback property op true zetten.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Het gaat over een CheckBoxList, en niet over een CheckBox.
Dan heb ik niks gezegd... :o

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Verwijderd

Topicstarter
Het is dus asp.net. Als ik de autopostback op true set. Dan genereert hij wel een postback alleen dan moet ik wel weten dat het een postback van een checkboxlist is anders krijg ik problemen met een ander deel van het programma.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 23 June 2003 @ 14:00:
Het is dus asp.net. Als ik de autopostback op true set. Dan genereert hij wel een postback alleen dan moet ik wel weten dat het een postback van een checkboxlist is anders krijg ik problemen met een ander deel van het programma.
:? Daar heb je eventhandlers voor?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Verwijderd schreef op 23 June 2003 @ 14:00:
Het is dus asp.net. Als ik de autopostback op true set. Dan genereert hij wel een postback alleen dan moet ik wel weten dat het een postback van een checkboxlist is anders krijg ik problemen met een ander deel van het programma.
Hoezo? Welke problemen?
Je kan daar zelf voor zorgen dmv een vlag ofzo te zetten, en dan te gaan checken...

https://fgheysels.github.io/


Verwijderd

Topicstarter
Nou het zit zo.. Ik moet me datagrid updaten als er op een checkboxlist item wordt geclicked. Echter als ik dit standaard doe in me postback, dan heb ik problemen dat me push button van me datagrid niet meer een event genereerd.

Ik wil dus het event dat ik genereer van me checkboxlist kunnen opvangen. Om zo te checken dat ik de juiste handeling kan verrichten.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

In welke postback handle je dat? In de Page_load(sender as object, e as eventargs) method (handler van load-event) ?
Met de methodiek
ASP.NET:
1
2
3
If Page.IsPostback then
     ....
End if

Een datagrid raised z'n eigen events.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
yess in de page-load. precies zoals je het hebt omschreven alleen dan in c#.

Alleen een pushbutton in een datagrid genereerd ook een postback event.

[ Voor 34% gewijzigd door Verwijderd op 23-06-2003 14:21 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Waarom daar? Waarom niet iets als:

C#:
1
DataGrid1.OnSelectCommand += new EventHandler( DataGrid1_SelectCommand );

Zo kan je ook de pushbutton afvangen en heb je niet het probleem met de postback in je Page_load.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
* whoami volgt niet meer.
* whoami vind dat de TS zijn probleem een beetje abstract omschrijft...

https://fgheysels.github.io/


Verwijderd

Topicstarter
gorgi_19 kun je die regel code iets meer beschrijven? Sinds ik het OnSelectCommand niet ken en mij c# volgens mij ook niet?
Nog iets meer uitleg, voor whoami:)

* Ik heb dus een datagrid met daarin een collum met push buttons.
* In mijn Page-Load wordt connectie met een sqlserver gemaakt.
* Echter als ik dus opnieuw een connectie maak bij elke page load dan werken de push buttons niet meer omdat deze ook een postback genereren.
* Maar als ik dus op een checkboxlist item klik moet ik dus me datagrid kunnen updaten.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

[rml][ ASP.NET]datagrid werkt niet[/rml]

Zie de 2e helft van het topic... :) Als je zelf wat wil proberen en aangeven wat je niet snapt, wil ik evt. wel gaan aanvullen. :)

Persoonlijk zou ik willen aanraden om geen events van controls te handlen in het Load event. Schrijf voor ieder event dat je wilt afvangen, een eigen handler. :)

[ Voor 30% gewijzigd door gorgi_19 op 23-06-2003 14:56 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Ik zal nog wel weer even aan prutsen. In iedergeval many tnx!

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Ik snap niet goed wat die Checkboxlist er dan komt bij kijken.

Kijk misschien eens naar de UpdateCommandColumn enzo.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Nou aan de hand van die checkboxlist moet ik dus me datagrid kunnen updaten. Daar wil ik dus het liefst een speciefiek event van hebben en geen algemeen postback event.

als ik nou bijv. click op een checkboxlist en ik kan dat event isoleren heb ik het probleem niet meer. Dan update ik daar alleen me datagrid (zoals het ook hoort)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Nu ik het zo teruglees, snap er ik ook even helemaal niets meer van... ;)
Kan je mij en whoami anders 'meenemen' in je applicatie, door middel van een klein voorbeeldje? Een screenshot, met de opties van de checklistbox. Want ik kan me er eik helemaal niets meer bij voorstellen.. ;)

je wilt dus aan de hand van een checkboxlist een datagrid vullen?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
hehehe oke.
1 je start op en vult een datagrid
2 mijn datagrid bevat items met een bepaalde rating(1-5)
3 als ik opstart worden in de datagrid de items met b.v. rating 4 geshowed.
4 nu heb ik dus een checkboxlist met simple(rating 1, rating 2 enz)
5 als ik dus b.v. rating 5 selecteer(in me checkboxlist) moet me datagrid de items laten zien die een rating 4 of een rating 5 hebben.

mischien is dit iets duidelijker?

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Wel, in de event-handler van de OnSelectedIndexChanged event ga je je DataSource van je datagrid gaan filteren, en rebind je je DataGrid, en zorg ervoor dat dat in je Page_Load niet gebeurt. Dit kan je doen door te checken op de IsPostBack property.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Da's duidelijk..
Ik zal de procedures iets gaan toelichten mbv vb.net
Om te beginnen.
ASP.NET:
1
2
3
4
5
Private Sub Page_Load(sender as object, e as eventargs) Handles Mybase.Load
    If Not Page.IsPostback
        ' Bind hier je datagrid
    End if
End sub

Zo wordt je datagrid de eerste keer geladen.
Vervolgens hebben we nog een checkboxlist. Echter, je wilt maar 1 keuze kunnen maken, dus moet je een radiobuttonlist gebruiken, maar dat terzijde..
Een radiobuttonlist heeft een SelectedIndexChanged event, welke we maar al te graag af willen vangen.
ASP.NET:
1
2
3
4
5
6
7
8
9
10
Private Sub melp(ByVal sender As Object, ByVal e As EventArgs) Handles radiobutton1.SelectedIndexChanged 
    Dim rbl as RadioButtonList = CType(sender, RadioButtonList)
    Dim li as listItem
    For each li in rbl
        If li.Checked
            ' Op dit punt hebben we de geselecteerde waarde
            ' We binden vervolgens de lijst aan de hand van deze waarde. Hier kunnen we evt. een dataview voor misbruiken, met een rowfilter.
         End if
    Next
End sub

En klaar.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Sinds ik geen vb. kan heb ik een beetje moeite om de code te lezen maar ik zal even een stukie posten(weet je mooie code tag niet?) Ik gebruik .net studio en click dus gewoon op die eventsproperty. Hij zou dus het event moeten opvangen, maar hij komt er dus nooit. In bijde gevallen niet hij doet alleen een Page_Load
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void Page_Load(object sender, System.EventArgs e)
{
     if(!IsPostBack)
     {
       sqlConnection2 = this.setConnection(user,"tester",sqlConnection2);
       this.FillDataGrid();
      }
}
private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e){
   //hier kom ik dus niet als ik een pushbutton gebruik
}

private void RatingCheckBoxList1_SelectedIndexChanged(object sender, System.EventArgs e)
{
   //hier kom ik dus ook niet als ik op me checkbox click
}

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Zou je [code=c#][/code] kunnen gebruiken? dat leest iig voor mij een stuk makkelijker, en voor een hoop anderen ook.. ;)

Je hebt nu exact hetzelfde probleem als in het topic wat ik eerder aangaf, je event is niet gekoppeld aan je method. In vb.net gebruik je Handles, voor de C# versie moet je bijvoorbeeld whoami lief aankijken.. :+

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:57
Je moet eens kijken naar de CommandName property enzo.

Dit, en hoe je een event aan een eventhandler koppelt heb ik eerder vandaag al eens getyped in het topic dat gorgi eerder aangaf.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Daar zit het probleem ook niet. Als ik er een link van maak i.p.v. een pushbutton gaat het perfect. De events komen allemaal mooi binnen e.d. echter als je er een pushbutton van maakt, doet hij automatisch een postback. Maar hij komt met een break ook bij geen van de events. Ga ik over na linkbutton gaat het wel goed.

Nu heb ik dit opgevangen in me page_load, maar nu genereerd me CheckBoxList(wat overgens goed is, meerdere moeten geselecteerd kunnen worden:-) ) . Ook een pageload, maar nu moet ik dus wel me connectie refreshen bij dit event.

Verwijderd

Topicstarter
Ik ben er achter :-) Was een foutje vanmezelf(zoals altijd :-P). Bij me InitializeComponent() is een verwijder actie niet helemaal goed gegaan er stond ergens een verdwaalde "; ". Dus hij koppelde niet juist. De code e.d. van het linken was goed, alleen ja dan moet hij er wel komen. Welkom in de wondere wereld van programmeren

Verwijderd

Topicstarter
In iedergeval nog bedankt voor de info whoami & gorgi_19
Pagina: 1