Avatar billede karsten_larsen Praktikant
15. marts 2007 - 15:42 Der er 10 kommentarer og
2 løsninger

Indsætte værdi i label i UserControl fra aspx siden

Hvordan får jeg indsat værdi i en usercontrol fra codebehind fra den side som bruger usercontrolen?

eks.

UserControl indholder "Label1"

på aspx-siden i code behind vil jeg gerne kunne styre
indhold af Label1.Text noget i denne stil

uc1.visble = true
Label1.text = "hej"

??:-) karsten_larsen
Avatar billede kalp Novice
15. marts 2007 - 15:43 #1
((Label)this.Page.FindControl("Label1")).Text = "hej";
Avatar billede snepnet Nybegynder
15. marts 2007 - 15:43 #2
Du gør din label public (ikke så pænt), eller laver en property der mapper til din labels .Text:

public string Hilsen
{
  get{return someLabel.Text;}
  set{someLabel.Text = value;}
}

Mvh
Avatar billede snepnet Nybegynder
15. marts 2007 - 15:44 #3
(den sidste er self. den pæne udgave).
Avatar billede kalp Novice
15. marts 2007 - 15:46 #4
snepnet >> spørger fordi jeg ikke ved det.. hvordan gør du denne public?
spørger fordi jeg ikke ved det:P

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
Avatar billede kalp Novice
15. marts 2007 - 15:49 #5
ahh jeg er med nu.. usercontrol's..
Avatar billede snepnet Nybegynder
15. marts 2007 - 15:59 #6
Det er en godt spørgsmål qawi - med website modellen der benyttes i vs2005 er det faktisk en smule bikset... Men det er som sagt ikke den løsning jeg vil anbefale (det er den med at lave en property).

Du kan gøre det (hvis du virkelig vil), ved at definere dine fields i en baseklasse som publics - og så angive i dit controldirective hvilken base du vil benytte... F.eks. sådan her:

public class SomeBaseControl : UserControl
{
    public TextBox TextBox1;
}

og så din usercontrol:
<%@
  // som normalt men tilføj
  CodeFileBaseClass="SomeBaseControl"
%>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

Så skal frameworket nok sørge for at det er det field du selv har defineret der bliver benyttet - og ikke et nyt genereret.

Mvh
Avatar billede karsten_larsen Praktikant
15. marts 2007 - 16:15 #7
Er ikke lige med på diskussionen, men gawi svar virker fint umiddelbart - dog forstår jeg ikke at følgende:
CType(Me.Page.FindControl("TextBox1"), TextBox).Text = "hej"
ikke kan lade sig gøre
Avatar billede kalp Novice
15. marts 2007 - 16:19 #8
er på vej ud af døren så kan ikke lige tjekke CType

du kan også gøre dette

Label label = this.Page.FindControl("Label1") as Label;
label.Text = "hej";

eller det mener jeg i hvertfald.. men er som sagt på vej ud :P
Avatar billede snepnet Nybegynder
15. marts 2007 - 17:07 #9
Jeg vil fortsat anbefale dig at lave en property, af flere årsager:

For det første vil det ikke virke, hvis du indsætter en Label med id'et Label1 på din side, eller for den sags skyld på en anden usercontrol du også indsætter på siden.
Som et minimum må du gå via din usercontrols FindControl.
Har du kaldt din usercontrol uc1 på siden - skal du lave en
uc1.FindControl("Label1").

Men det mener jeg stadig ikke kan anbefales, da du så skaber en afhængighed imellem navngivningen af dine kontroller på din usercontrol, og din side.
Vel at mærke en afhængighed som kompileren ikke kan hjælpe dig med at checke.

Laver du derimod en property - kan du kalde den noget der giver mening for den usercontrol du har lavet... F.eks. Header.
Du kan så i implementeringen af din property (på selve din usercontrol) mappe til det du vil - og ændre det lige så tit du gider, uden at dine sider holder op med at fungere.

Mvh
Avatar billede karsten_larsen Praktikant
16. marts 2007 - 09:17 #10
okay - Snepnet vil du ogaå lave et svar, så deler jeg point ligeligt.

Tak for hjælpen begge,
:-) karsten_larsen
Avatar billede snepnet Nybegynder
16. marts 2007 - 09:37 #11
Det siger vi da bare :o)
... men pointene er ikke vigtigere - det vigtige er at du bruger en property ;o)
Mvh
Avatar billede karsten_larsen Praktikant
16. marts 2007 - 09:47 #12
yes - jeg skal nok bruge property næste gang - "på spejder ære" :o)
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