Avatar billede jps6kb Novice
18. december 2009 - 17:58 Der er 5 kommentarer og
2 løsninger

ASP.NET - UserControl, kald metode i parent

Hey,

Jeg har, ved at snuse rundt på Google, fundet følgende:


UserControl:

protected void btnFjern_Click(object sender, EventArgs e)
{
    object[] args = { this };
    Page.GetType().InvokeMember("Fjern",
        BindingFlags.Public, null, this.Page, args);
}

Parent-page:

public void Fjern(object[] args)
{
    Response.Redirect("Blah.aspx"); // Den bliver aldrig kaldt
}

Hvad gør jeg forkert? Jeg vil gerne have instansen af UserControl'en med, da jeg skal, i det her tilfælde, have fjernet den fra en samling. Håber i kan hjælpe. :)
Avatar billede lasserasch Juniormester
18. december 2009 - 22:30 #1
Hey....

Jeg ville gribe det lidt anderledes an.
Ret dette til på dit usercontrol, så skal det virke:

--------------------
protected void btnFjern_Click(object sender, EventArgs e)
{
    object[] args = { this };
    MethodInfo minfo = Page.GetType().GetMethod("Fjern");
    minfo.Invoke(Page, args);
}
--------------------         

På denne måde er det også nemt at tjekke om metoden eksisterer før den forsøges kaldt mv.

Mvh.
Lasse
Avatar billede jps6kb Novice
18. december 2009 - 22:47 #2
Tak for svaret, men desværre virker det ikke. Den laver godt nok en postback, men uden resultat... :-/
Avatar billede jps6kb Novice
18. december 2009 - 23:19 #3
Hmm... okay, det er løbet helt af sporet det her.
Jeg tror, at det jeg mangler er et eksempel på, hvordan man gør følgende:

1. Tilføjer flere UC'er af samme type til en placeholder dynamisk
2. Fjerner en bestemt UC fra placeholderen.
3. Beholder værdierne i textbox's i UC'en når man tilføjer eller fjerner

Så f.eks. jeg tilføjer to UC af typen ucMinUC, som har en textbox.
Jeg retter i textbox'ene.
Jeg tilføjer en ucMinUC mere.
Jeg fjerner den første. Alt sammen uden at de tilbageværende uc'er beholder den værdi de har som standard eller den jeg har givet efter tilføjelse...
Avatar billede lasserasch Juniormester
18. december 2009 - 23:20 #4
Nej det virker fint :-) Men du har en fejl mere.

Din fjern metode skal ikke modtage object[]. Den skal modtage UserControl. Jeg forstår dog ikke at du ikke får en exception...

Men anyway... jeg har uploadet et eksempel til dig. Så kan du se det virke.

http://www.r-coding.dk/downloads/eksperten/DynamicMethodCalls.zip



Mvh.
Lasse
Avatar billede jps6kb Novice
19. december 2009 - 17:39 #5
Tak for eksemplet - det virker, men problemet er, har jeg fundet ud af, at det ikke virker på UC'er man tilføjer dynamisk - af en eller anden årsag.
Jeg har som sagt en tom placeholder som jeg tilføjer UC'ere til, og når jeg klikker på knappen i dem, sker der intet.
Avatar billede jps6kb Novice
20. december 2009 - 13:28 #6
Nå, jeg tror jeg vil finde en alternativ løsning på det. Evt. generere mine uc'ere i en table med en kolonne indeholdende knapper.
Tak for kampen og smid lige et svar, så deler vi. ;-)
Avatar billede lasserasch Juniormester
21. december 2009 - 07:32 #7
Nu ved jeg jo ikke hvordan du tilføjer dine usercontrols til din placeholder. Men om de er tilføjet dynamisk eller statisk er lige meget.

Jeg har opdateret mit tidligere eksempel som du kan downloade fra samme URL igen.

Nu tilføjes usercontrols dynamisk i runtime til en placeholder og det virker altså fint :-)

Mvh.
Lasse
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester