[C#/] Dropdownlist extenden

Pagina: 1
Acties:

  • Chielos
  • Registratie: Maart 2003
  • Laatst online: 17-11 13:14

Chielos

Inno Mini Cooper

Topicstarter
Wat wil ik
Ik wil een click actie toevoegen aan een dropdownlist (hopelijk is dat een pre-drownlist actie)

Ik heb al het een en ander uitgezocht en mijn idee was een IbuttonControl toevoegen aan de basis klasse en deze on_click event afvangen. Maar de code reageert niet op mijn clicks..

Iemand een idee of help?

Mijn code

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
    public class mvpComboBox : System.Web.UI.WebControls.DropDownList, IButtonControl
    {
        public bool blCausesValidation;
        public string strCommandArgument;
        public string CommandName;
        public string strPostBackUrl;
        public string strText;
        public string strValidationGroup;
        public string strCommandName;
        public event EventHandler Click;
        public event CommandEventHandler Command;


        protected override void OnLoad(EventArgs e ) 
        {
            base.OnLoad(e);
        }
        bool IButtonControl.CausesValidation
        {
            get
            {
                return blCausesValidation;
            }
            set
            {
                blCausesValidation = value;
            }
        }
        string IButtonControl.CommandArgument
        {
            get
            {
                return strCommandArgument;
            }
            set
            {
                strCommandArgument = value;
            }
        }
        string IButtonControl.CommandName
        {
            get
            {
                return strCommandName;
            }
            set
            {
                strCommandName = value;
            }
        }
        string IButtonControl.PostBackUrl
        {
            get
            {
                return strPostBackUrl;
            }
            set
            {
                strPostBackUrl = value;
            }
        }
        string IButtonControl.Text
        {
            get
            {
                return strText;
            }
            set
            {
                strText = value;
            }
        }
        string IButtonControl.ValidationGroup
        {
            get
            {
                return strValidationGroup;
            }
            set
            {
                strValidationGroup = value;
            }
        }
     

        protected virtual void OnClick(Object sender, EventArgs e) 
        {
            Click(sender, e);
        } 
    }

  • Daspeed
  • Registratie: Maart 2001
  • Laatst online: 12:17
Kun je misschien even in andere woorden vertellen wat je wilt bereiken? Ik snap er namelijk geen hout van :P

  • Piels
  • Registratie: Maart 2001
  • Laatst online: 27-11 14:22
Je registreert in ieder geval nergens je events.. Of laat je niet alle code zien?

C#:
1
sender.EventName += new EventNameEventHandler(MyHandler);

Windows Phone Apps: Belstatus, Pinautomaten


  • Marcj
  • Registratie: November 2000
  • Laatst online: 11:39
Volgens mij ben je helemaal verkeerd bezig. Normaal doe je zoiets met events. Als je hier kijkt zie je dat de events die beschikbaar zijn voor een DropDownList geen onClick event oid bevatten. Alleen een SelectedIndexChanged. Dus hiermee kun je alleen er op reageren als de gebruiker iets anders selecteerd.

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Marcj schreef op vrijdag 02 maart 2007 @ 17:27:
Volgens mij ben je helemaal verkeerd bezig. Normaal doe je zoiets met events. Als je hier kijkt zie je dat de events die beschikbaar zijn voor een DropDownList geen onClick event oid bevatten. Alleen een SelectedIndexChanged. Dus hiermee kun je alleen er op reageren als de gebruiker iets anders selecteerd.
Neemt niet weg dat je alsnog zelf dat event kan 'maken'.


TS: Je zal dan zelf een Javascript-onclick script moeten genereren. Vervolgens zal je Render moeten overriden en hier AddAttributesToRender moeten overriden :)
Daarna zal je deze in je code moeten afvangen en op het juiste moment het event moeten raisen :) Echt makkelijk al het niet zijn, maar met Reflector zal je een DropDownList class kunnen 'onderzoeken' en kijken hoe MS het gemaakt heeft :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Chielos
  • Registratie: Maart 2003
  • Laatst online: 17-11 13:14

Chielos

Inno Mini Cooper

Topicstarter
Right het laatste zou ik eens kunnen proberen. Het is wel precies wat ik zou willen..

Het idee is als volgt:
- Grote lijst met waarden + 200 of meer
- pas vullen uit de database op het moment dat de combo geklikt wordt (eigenlijk een soort van before_ click)
- dat in het geheel in ajax gooien zodat niet heel mijn pagina gechanged wordt.

-Visueel hoef ik dan bij een intiele load van een pagina alleen de eerst geselecteerde waarde toe te voegen aan de combo lijst. Wanneer de gebruiker iets aanklikt de combo lijst vullen. Dit is erg nuttig wanneer je een hoop van dat soort lijstjes hebt die de gebruiker 9 van de 10 keer niet eens raadpleegt.

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 24-11 21:01
Ik wil even iets anders over je code zeggen.
Je maakt nu wel mooi properties, maar dat heeft weinig zin als je de variable die aan de property is gekoppeld niet private is. Dan verlies je het nut van de properties.

  • Chielos
  • Registratie: Maart 2003
  • Laatst online: 17-11 13:14

Chielos

Inno Mini Cooper

Topicstarter
klopt.. heb alleen ff snel die properties aangemaakt om te zorgen dat de code compiled.,..

  • Chielos
  • Registratie: Maart 2003
  • Laatst online: 17-11 13:14

Chielos

Inno Mini Cooper

Topicstarter
ik heb geprobeerd met de Lutz Roeders .NET Reflector om het een en ander te herbouwen. Daarbij ben ik eerst gestart om de ImageButton te herbouwen. Mocht me dat lukken dacht ik daarna de click actie te "verplaatsen" naar de combobox. Maar het haalt op niets uit..

Mijn vraag resteert nog. Ben ik zowiezo op tijd om de datasource aan te passen wanneer ik de click wel zo kunnen afvangen? Ik zelf heb daar niet zo heel veel vertrouwen in.

Michiel

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Chielos schreef op maandag 05 maart 2007 @ 13:00:
ik heb geprobeerd met de Lutz Roeders .NET Reflector om het een en ander te herbouwen. Daarbij ben ik eerst gestart om de ImageButton te herbouwen. Mocht me dat lukken dacht ik daarna de click actie te "verplaatsen" naar de combobox. Maar het haalt op niets uit..

Mijn vraag resteert nog. Ben ik zowiezo op tijd om de datasource aan te passen wanneer ik de click wel zo kunnen afvangen? Ik zelf heb daar niet zo heel veel vertrouwen in.

Michiel
Binden gebeurd normaliter tijdens het Load-event van een Page. Normaliter wordt deze ook niet uitgevoerd tijdens een postback. Een event zal sowieso een postback veroorzaken, dus deze twee zitten niet in elkaars vaarwater.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Chielos
  • Registratie: Maart 2003
  • Laatst online: 17-11 13:14

Chielos

Inno Mini Cooper

Topicstarter
nee ok maar het volgende gaat gebeuren

page_load --> binden van 1 waarde aan de dropdown
dropdown_click --> binden van 100 waarden aan de dropdown
--> dropdown showen?
dropdown_selectedindexchanged() --> klaar?

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Chielos schreef op maandag 05 maart 2007 @ 13:10:
nee ok maar het volgende gaat gebeuren

page_load --> binden van 1 waarde aan de dropdown
dropdown_click --> binden van 100 waarden aan de dropdown
--> dropdown showen?
dropdown_selectedindexchanged() --> klaar?
* gorgi_19 ziet het probleem nog niet?
2 postbacks en 1 load. Die zitten niet in elkaars vaarwater?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Chielos
  • Registratie: Maart 2003
  • Laatst online: 17-11 13:14

Chielos

Inno Mini Cooper

Topicstarter
dat probleem is er ook niet :)

de vraag is alleen: wordt de eerste postback gedaan voordat- of nadat de lijst met waarden getoond wordt

  • Chielos
  • Registratie: Maart 2003
  • Laatst online: 17-11 13:14

Chielos

Inno Mini Cooper

Topicstarter
Nou heb het voor elkaar (voor mensen die intresse hebben ik zal vanavond een stukje code plaatsen).

Alleen een "onclick" is te laat dus ik ben het nu aan het proberen met een onMouseOver event..Die is wel op tijd maar daardoor flikkert het scherm als een gek en kan ik ook de combo niet meer openklikken.. Iemand nog andere suggesties voor events?

ik heb nog een lijstje gevonden met events, zijn er nog meerdere die in de buurt zouden kunnen komen?
  • onAbort - The user aborts the loading of an image
  • onBlur - form element loses focus or when a window or frame loses focus.
  • onChange - select, text, or textarea field loses focus and its value has been modified.
  • onClick - object on a form is clicked.
  • onDblClick - user double-clicks a form element or a link.
  • onDragDrop - user drops an object (e.g. file) onto the browser window.
  • onError - loading of a document or image causes an error.
  • onFocus - window, frame, frameset or form element receives focus.
  • onKeyDown - user depresses a key.
  • onKeyPress - user presses or holds down a key.
  • onKeyUp - user releases a key.
  • onLoad - browser finishes loading a window or all of the frames within a frameset.
  • onMouseDown - user depresses a mouse button.
  • onMouseMove - user moves the cursor.
  • onMouseOut - cursor leaves an area or link.
  • onMouseOver - cursor moves over an object or area.
  • onMouseUp - user releases a mouse button.
  • onMove - user or script moves a window or frame.
  • onReset - user resets a form.
  • onResize - user or script resizes a window or frame.
  • onSelect - user selects some of the text within a text or textarea field.
  • onSubmit - user submits a form.
  • onUnload - user exits a document.

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Je bent nu serverside en clientside door elkaar aan het halen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Chielos
  • Registratie: Maart 2003
  • Laatst online: 17-11 13:14

Chielos

Inno Mini Cooper

Topicstarter
serverside script wordt geactiveerd door client-side.. De "__doPostBack" methode.

bijvoorbeeld:
onMouseOver="javascript:setTimeout('__doPostBack(\Control1\',\'\')', 0)"
Pagina: 1