Toon posts:

[c# asp.net] Dynamic event

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een aspx pagina met een placeholder waarop steeds andere content getoond wordt. De content wordt gelezen uit een database. Nu wil ik ook gebruik kunnen maken van invul formuliertjes. Een aantal velden / labels / dropdownmenu's ed worden getoond en op het laatst een button om de informatie te versturen. De verschillende velden worden in een klasse in een tabel gestopt en deze wordt getoond op de placeholder.

ik heb nu een methode geschreven in de code behind van de aspx pagina waar de placeholder instaat en deze methode wil ik aanroepen met de knop die in de klasse wordt aangemaakt. Het is om het even of dit gebeurd via een event (btn.Click += event) of dat er in de html code een OnClick"Methode" wordt toegevoegd.

Ik heb gezocht op dynamic events via google maar ik kom er niet helemaal uit. Kan iemand mij vertellen hoe ik dit het best aan kan pakken of op welke term ik beter kan zoeken?

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
wat is je probleem precies. Ik snap er niks van.

Je voegt dynamisch controls in je placeholder. Als je dan bij je button bent kan je toch gewoon met myButton.Click += new EventHandler( myHandler ); het event toevoegen?

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
rwb schreef op woensdag 17 augustus 2005 @ 10:41:
wat is je probleem precies. Ik snap er niks van.

Je voegt dynamisch controls in je placeholder. Als je dan bij je button bent kan je toch gewoon met myButton.Click += new EventHandler( myHandler ); het event toevoegen?
Misschien een beetje onduidelijk, ik probeer het nog een keer.

Ik heb een klasse GenForm, deze klasse haalt een string uit een database. Deze string string bevat xml informatie over welke velden er getoond moeten worden, de naam van de velden, verplicht of niet verplicht enz. Als laatste is er een knop gedefineerd die ook een naam heeft en een omschrijving die op de knop komt te staan.

De klasse loopt 1 voor 1 de tags af en plaatst de velden in een Table zodat ze netjes onder elkaar komen te staan. Als laatste wil ik de knop toevoegen:

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
private void ControlButton(XmlTextReader reader)
      {
         string cntlName = reader.Name;
         Button btn = new Button();
            btn.ID = "btnForm";
            btn.Click += new EventHandler(myHandler);

         for(int i=0; i<reader.AttributeCount;i++)
         {
            reader.MoveToAttribute(i);
            switch(reader.Name.ToLower())
            {
               case "naam":
                  btn.Text = reader.Value;
                  break;
            }
         }

         TableCell td = new TableCell();
         td.HorizontalAlign = HorizontalAlign.Right;
         td.Controls.Add(btn);
         TableRow tr = new TableRow();
         
            TableCell tdEmpty = new TableCell();
            tr.Controls.Add(tdEmpty);
            tr.Controls.Add(td);


         _Table.Controls.Add(tr);
      }


Dit werkt dus niet omdat de naam "myHandler" niet voorkomt in deze klasse. De button moet verwijzen naar een methode in de index.aspx pagina....

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
En je maakt in je Index.aspx een instantie aan van GenForm? Dan kan je daar toch gewoon een EventHandler aanmaken en meegenven dus in je Index.aspx

C#:
1
2
EventHandler myEventHandler = new EventHandler( myHandler );
GenForm myGenForm = new GenForm( myEventHandler );

en dan in je GenForm
C#:
1
btn.Click += myEventHandler;

[ Voor 13% gewijzigd door Woy op 17-08-2005 10:55 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • cowgirl
  • Registratie: November 2000
  • Laatst online: 18-12-2025
Je zult de methode bekend moeten maken om deze te kunnen aanroepen. Eerst een var aanmaken die naar je pagina verwijst en de methode aanroepen vanuit deze var.
C#:
1
2
3
4
5
6
7
8
9
10
protected Index m_basePage;

private void Page_Init(object sender, System.EventArgs e)
{
    m_basePage = (Index)this.Page;
}
private void ControlButton(XmlTextReader reader)
{
    btn.Click += new EventHandler(m_basePage.myHandler);
}