Avatar billede kamak Praktikant
27. august 2004 - 11:01 Der er 13 kommentarer og
1 løsning

problemer med button i usercontrol

Jeg har en side der er opdelt i 3 celler. når man trykker på en knap/link skifter en af cellerne indhold. Cellen viser altså forskellige ascx. det virker fint og man kan skifte rundt mellem de forskellige ascx-
Nu har jeg så lavet nogle aspbuttons i nogle ascx. Ligemeget hvad jeg skriver i asxcscriptet knapperne skal gøre sker der altid det at at cellen med ascx skifter tilbage til den ascx der vises når siden loades. Dette sker også selvom jeg bare indsætter en button uden at kode noget onclick til den.???
meget mystisk eller hvad.
Avatar billede snepnet Nybegynder
27. august 2004 - 11:17 #1
hej kamak... den var lidt svær at forstå... kan du eventuelt vise lidt kode ?
mvh
Avatar billede kamak Praktikant
27. august 2004 - 11:32 #2
her er scriptet til default.aspx som ses når man loader siden:
<% @Page Language="C#"  %>
<link href="style.css" type="text/css" rel="stylesheet" />
<script language="C#" runat="server">
void Page_Init(Object Src, EventArgs E ) {
  Control main = Page.LoadControl("Main.ascx");
  MainCell.Controls.Add(main);
}
void cat_1(Object Src, EventArgs E )
{
  Control main = Page.LoadControl("kategoriside.ascx");
  MainCell.Controls.Clear();
  MainCell.Controls.Add(main);
}
void forside(Object Src, EventArgs E )
{
  Control main = Page.LoadControl("Main.ascx");
  MainCell.Controls.Clear();
  MainCell.Controls.Add(main);
}
</script>

Html delen er ikke så vigtigt men den er opbygget af en tabel med 3 celler hvoraf den ene celle har id=MainCell som jeg referere til ovenover. metoderne ovenover kaldes fra
<asp:LinkButton ID="cmd_frontpage" onclick="forside" Text="Forside" runat="server" />
<asp:LinkButton ID="cmd_cat_1" onclick="cat_1" Text="Møbler" runat="server" />
som er i htmldelen.

dette virker fint og når man trykker på knapperne skifter MainCellen indhold mellem nogle ascx.
Der er ingen problemer med den ascx der loades i page_init. I den har jeg en knap der skriver noget i en label hvilket virker fint.
Men i den anden ascx som ses når man trykker på knappen der loader den i MainCellen har jeg PRÆCIS identisk kode - altså en knap der skal skrive noget i en label. og dette virker ikke selvom det er magen til den anden

kode:
<%@ Control Language="C#" %>
<script language="C#" runat="server">
void test(Object Src, EventArgs E )
{
    Label1.Text = "weeee";
}
</script>

og i html delen: <asp:button ID="Button1" onClick="test" Text="tralalala" runat=server/>

Jeg får ingen fejl men når man trykker på knappen skifter indholdet i MainCellen tilbage til den ascx der loades i page_init. Og hvis jeg sætter en knap ind uden funktionalitet gør den præcis det samme (loader den anden ascx i maincellen) selvom den ikke burde gøre noget.
Avatar billede snepnet Nybegynder
27. august 2004 - 11:56 #3
hvis du først tilskrive kontrollen til siden i en eventhandler - vil du ikke kunne samle events op fra den, da den ved næste postback simpelthen ikke eksisterer (fordi du indsætter den fra et event i et postback-scenarie, bliver den ikke husket til næste).

var det forståeligt ?
mvh
Avatar billede kamak Praktikant
27. august 2004 - 12:09 #4
det forstår jeg ikke? har du et kodeeksempel?
Avatar billede snepnet Nybegynder
27. august 2004 - 12:25 #5
Du kan lige få en illustration her :

// page_load - der indsættes en knap
Button a = new Button();
a.Text = "A";
a.Click += new System.EventHandler(buttonA_Click);
Form1.Controls.Add(a);

void buttonA_Click(object sender, EventArgs e)
{
  // i handleren her indsættes en ny knap
  Button b = new Button();
  b.Text = "B";
  b.Click += new System.EventHandler(buttonB_Click);
  Form1.Controls.Add(b);
}

void buttonB_Click(object sender, EventArgs e)
{
  // du vil aldrig kunne komme herind, da knappen b kun vil eksistere efter
  // buttonA_Click eksekveres, hvilken den ikke vil gøre med mindre der trykkes på knap a.
  // og... det er svært at trykke på to knapper på samme tid :o)
}

Jeg håber den var beskrivende - ellers må du lige sige til.

mvh
Avatar billede kamak Praktikant
27. august 2004 - 12:38 #6
Jeg er ikke sikker på jeg forstår det rigtigt.
Du indsætter først en knap på formen.
Trykker man på den indsættes en ny knap.
Men for at at eksekvere void buttonB_Click skal man trykke på begge knapper.

Men hvordan løser man så problemet?
Avatar billede kamak Praktikant
27. august 2004 - 12:51 #7
jeg har testet din kode. rigtigt nok indsættes en knap A når man starter. trykker jeg på den indsættes en knap B. jeg har sat void buttonB_Click til at skrive noget i en label. trykker jeg på B sker der ikke noget andet end B simpelthen forsvinder. Så din illustration illusterer præcis mit problem - men hvordan løser man det.
Avatar billede snepnet Nybegynder
27. august 2004 - 13:17 #8
Du bliver nødt til enten at lave noget om på den måde du opbygger siden, og eller sørge for at lave noget udvidet statehåndtering selv.

Jeg har desværre meget travlt lige nu, men jeg vil meget gerne give en hånd med det.

Du kan eventuelt tage et kig her - det er ikke fuldstændig at sidestille med det du har, men problematikken var som udgangspunkt det samme.

http://www.eksperten.dk/spm/519579

Mvh
Avatar billede kamak Praktikant
27. august 2004 - 14:14 #9
Det ser uoverskuelgt ud. jeg bliver nok nød til at lave det på en helt anden måde :-(
måske med noget templates hvis det er til at finde ud af.
Avatar billede snepnet Nybegynder
27. august 2004 - 14:56 #10
En usercontrol er sådan set en templated control i forvejen, og det vil ikke ændre på problematikken om du bruger den ene eller anden kontroltype.

det er ikke fordi det behøver at være så vanskeligt at fikse..

du kan f.eks. bruge en querystringparameter til at angive et "pagemode", og så indsætte din kontroller i forhold til det ved load, men der er mange måder at gøre det på.
Avatar billede snepnet Nybegynder
02. oktober 2004 - 03:08 #11
hvordan går det her kamak ?
jeg prøver lige at rydde lidt op i listen over gamle uafsluttede spørgsmål, så du får et svar hvis du har kunnet bruge det til noget, og du kan bare skrive hvis du har mere at spørge om omkring det.
mvh :o)
Avatar billede snepnet Nybegynder
21. oktober 2004 - 19:47 #12
kamak ?
Avatar billede kamak Praktikant
29. november 2004 - 13:33 #13
sorry ventetiden - her er dit svar :-) tak for hjælpen. Jeg fik løst problemet men det er så lang tid siden jeg ikke helt kan huske hvordan :-)
Avatar billede snepnet Nybegynder
30. november 2004 - 00:57 #14
haha - ja sådan kan det jo gå :o)
mvh
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