[ASP.NET] CompositeControl en Button Clickevent

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Canaria
  • Registratie: Oktober 2001
  • Niet online

Canaria

4313-3581-4704

Topicstarter
Ik zit met een ASP.NET probleem waar ik niet uit kom.

Ik heb een composite control met daarin een button en een eventhandler (en nog veel meer, maar dat doet er even niet toe).
Als ik deze composite control als childcontrol in een webpart opneem en de webpart in een pagina zet, wordt de code in de eventhandler uitgevoerd..
Als ik dezelfde composite control als childcontrol in een andere composite control opneem en deze andere composite control in een webpart opneem en de webpart in een pagina zet, wordt de code in de eventhandler niet uitgevoerd.

Code:

composite control 1:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class TestControl1 : CompositeControl, INamingContainer
{
    protected Button submitButton;
    
    protected override void CreateChildControls()
    {
        base.CreateChildControls();
        submitButton = new Button();
        submitButton.Click +=new EventHandler(submitButton_Click);
        this.Controls.Add(submitButton);
    }
    
    protected void submitButton_Click(object sender, EventArgs e)
    {
        // do something
    }
}

composite control 2:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
public class TestControl2 : CompositeControl, INamingContainer
{
    protected override void CreateChildControls()
    {
        base.CreateChildControls();
        foreach (a in b) // dynamisch childcontrols aanmaken
        {
            TestControl1 yControl = new TestControl1();
            yControl.ID = ietsUnieks.ToString();
            this.Controls.Add(yControl);
        }
    }
}

web part 1 - eventhandler wordt niet uitgevoerd
C#:
1
2
3
4
5
6
7
8
9
10
11
public class MyWebPart : System.Web.UI.WebControls.WebParts.WebPart
{
    protected TestControl2 zControl;
    
    protected override void CreateChildControls()
    {
        base.CreateChildControls();
        zControl = new TestControl2();
        this.Controls.Add(zControl);
    }
}


Lijkt me vrij basic toch, maar wat is het verschil en wat gaat er fout?

Apparticle SharePoint | Apps | Articles


Acties:
  • 0 Henk 'm!

  • Face_-_LeSS
  • Registratie: September 2004
  • Niet online
Weet je zeker dat "ietsUnieks.ToString();" tijdens postback dezelfde waarde heeft als tijdens de initiële pageload? Dat is namelijk van groot belang voor de werking van de asp.net events.

Acties:
  • 0 Henk 'm!

  • Canaria
  • Registratie: Oktober 2001
  • Niet online

Canaria

4313-3581-4704

Topicstarter
Face_-_LeSS schreef op donderdag 14 juli 2011 @ 22:21:
Weet je zeker dat "ietsUnieks.ToString();" tijdens postback dezelfde waarde heeft als tijdens de initiële pageload? Dat is namelijk van groot belang voor de werking van de asp.net events.
Ja, dat is een vaste combinatie van eigenschappen van een reactie op een nieuwsbericht die ik uit een Collection haal (een SPListItemCollection, om precies te zijn).
TestControl2 is een reactie, TestControl1 is een soort Like-button bij die reactie ;)
MyWebPart is een nieuwsbericht met de reacties en een invoerboxje eronder.

Apparticle SharePoint | Apps | Articles


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 heeft het vroeger ook gehad en uiteindelijk maar opgelost door met de Init te werken ipv CreateChildControls. Destijds was de controlcollection voor- en na een postback verschillend, met als gevolg dat buttons e.d. niet meer werkten (door de andere ID / locatie in de controlcollection).
Je kan het zelf nakijken door middel van trace.axd en de control collection voor en na een postback met elkaar te vergelijken in trace.axd. Deze zullen dan waarschijnlijk verschillend zijn.

Digitaal onderwijsmateriaal, leermateriaal voor hbo