Avatar billede beef12 Nybegynder
06. januar 2007 - 14:30 Der er 15 kommentarer og
1 løsning

Web User Control problem

Jeg har en web user control med en asp:button: <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />

Men når jeg klikker på knappen sker der ingenting. Jeg får en blank side, i stedet for at for at hoppe ned i metoden:

    protected void Button1_Click(object sender, EventArgs e)
    {
     
    }

Hvad er mon problemet?
Avatar billede kalp Novice
06. januar 2007 - 14:31 #1
tjah... arver din ASPX side fra den rigtige aspx.cs fil? altså codebehind fil?
Avatar billede thrytter Nybegynder
06. januar 2007 - 14:36 #2
Bliver din UserControl tilføjet dynamisk til siden?
Avatar billede beef12 Nybegynder
06. januar 2007 - 14:52 #3
Kalp > Ja
thrytter > Ja
Avatar billede beef12 Nybegynder
06. januar 2007 - 14:54 #4
Indtil videre har jeg lavet en workaround, hvor jeg blot udfører instruktionerne når Page.IsPostBack = true

Det kan jeg tillade mig, nu hvor jeg kun har en knap i min user control. Men det er ikke hensigtsmæssigt i længden.
Avatar billede kalp Novice
06. januar 2007 - 15:06 #5
hmm...  måske fordi det er et control.. prøv at ændre metoden til


    public void Button1_Click()
    {
     
    }
Avatar billede beef12 Nybegynder
06. januar 2007 - 15:15 #6
Den går desværre ikke - får fejlen:    
No overload for 'Button1_Click' matches delegate 'System.EventHandler'
Avatar billede kalp Novice
06. januar 2007 - 15:42 #7
jeg kan ikke umiddelbart huske det.. men synes bare ikke man laver det på den måde..

altså du burde vel bare lave en metode

public void enMetode()
{
kode her
}

og så

<asp:Button ID="Button1" runat="server" OnClick="enMetode" Text="Button" />
Avatar billede kalp Novice
06. januar 2007 - 15:54 #8
hvis det heller ikke virker så skal virker dit eget sikkert fint nok hvis du gør sådan OnClick="Button1_Click()"
Avatar billede beef12 Nybegynder
06. januar 2007 - 16:06 #9
Det er en eventhandler så begge forslag vil ikke virke.
Avatar billede thrytter Nybegynder
06. januar 2007 - 16:08 #10
Når du tilføjer din UserControl dynamisk til siden, skal denne tilføjes ved hvert postback!

Events virker kun hvis de kommer fra en kontrol som er indsat i kontroltræet.
Avatar billede beef12 Nybegynder
06. januar 2007 - 16:11 #11
Ok - så hvis jeg har følgende Load:
Control HomeAccount = LoadControl("HomeAccount.ascx"); PlaceHolder.Controls.Add(HomeAccount); PageTitle.Text = "General Status"; break;

Hvad skal jeg så gøre i min kode for at få det til at virke?
Avatar billede thrytter Nybegynder
06. januar 2007 - 16:15 #12
Du skal smide kontrollen ind på siden når det er nødvendigt!

Kan du ikke gemme en værdi i ViewState der fortæller om den skal tilføjes til siden ved postback.
Avatar billede beef12 Nybegynder
06. januar 2007 - 16:18 #13
Kontrollen er tilføjet - jeg tror ikke helt jeg forstår hvad du mener.
Avatar billede thrytter Nybegynder
06. januar 2007 - 16:22 #14
Du skriver at "Kontrollen er tilføjet" - betyder det at den tilføjes ved HVERT postback? At du tilføjer kontrollen i en eller anden eventhandler eller ved en eller anden betingelse betyder ikke at den automatisk bliver tilføjet igen ved postback.

Hvis ja, så burder der ikke være noget problem ved events.
Avatar billede beef12 Nybegynder
06. januar 2007 - 16:28 #15
Ah nu er jeg med. Du har ret thrytter - jeg smider den ved postback'en på hovedsiden (aspx-siden). Tak for hjælpen - smid et svar.
Avatar billede thrytter Nybegynder
06. januar 2007 - 16:30 #16
svar - og godt at det nu virker.
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