Avatar billede c-sharp Nybegynder
13. oktober 2004 - 10:26 Der er 10 kommentarer og
1 løsning

Sætte den samme værdi på mange labels

Hvordan sætter jeg den samme værdi på mange labels i en repeater?

Jeg har en repeater som skal vise nogle medarbejder, den skal så for hver medarbejder skrive eks. "navn: ", dvs navn kommer til at stå mange gange på siden. Jeg bruger sattelite assemblies på min side, og det vil sige at når man vælger engelsk skal der ikke stå navn men Name.

Hvordan løser jeg dette på den rigtige måde?
Avatar billede snepnet Nybegynder
19. oktober 2004 - 18:16 #1
hej c-sharp... en den stadig aktuel den her ?
mvh
Avatar billede c-sharp Nybegynder
21. oktober 2004 - 14:17 #2
Hej snepnet, rart at se at du er tilbage :-)
Ja den er stadig aktuel.
Avatar billede snepnet Nybegynder
21. oktober 2004 - 19:24 #3
hvad i alverden... jeg er helt sikker på at jeg skrev noget her ?!?!
nå - det kan være at vinduet havde stået åbent længe... så kan man vist godt risikere at teksten smutter når man poster...
jeg prøver igen :o)

kan du ikke vise mig din repeater-template (eller i hvert fald det relavante af den) - og så lige pege ud hvad det helt præcist er du gerne vil have "lokaliseret" - så skal jeg se om jeg ikke kan give en hånd.

beklager at jeg ikke lige var opmærksom - håber det går.

vi skrives ved :o)
mvh
Avatar billede c-sharp Nybegynder
22. oktober 2004 - 13:55 #4
Jeg har f.eks. en label i min repeater som har id="navn", jeg vil så gerne tilgå alle de instancer af dette label fra min code behind for at sætte teksten på denne label. Der skal stå den samme tekst i alle disse labels!
Avatar billede snepnet Nybegynder
22. oktober 2004 - 17:17 #5
umiddelbart er det mest nærliggende at du fikser det i dit ItemCreatedEvent - eller at du alternativt direkte skriver i din template at teksten skal hentes fra en eller anden property - du kan lige se et par muligheder :
(der er sådan lidt forudsætninger hist og her om at du har nogle metoder eller lignende til at gøre arbejdet... så GetString("name") repræsenterer altså et kald til en klasse der returnerer en lokaliseret præsentation af en tekst du kan tilgå via nøglen "name"... håber det er forståeligt).

det er bare skrevet her, så det kompilerer sikkert heller ikke sådan lige umiddelbart.

---------

// i ItemCreated
private void Repeater1_ItemCreated(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
  Label name = (Label)e.Item.FindControl("lblName");
  name.Text = SomeResource.GetString("name");
}

-----------

// en model hvor du direkte i templaten angiver at du vil trække teksten på en <asp:Label id="lblName" runat="server" Text='<%# NameString %>'></asp:Label>

// og i koden ville du så have :
protected string NameString
{
  get{return SomeResource.GetString("name");}
}

-----------

virker lige så fint med en metode
<asp:Label id="lblName" runat="server" Text='<%# GetString("name") %>'></asp:Label>

og du kunne måske gå direkte på din resource :
<asp:Label id="lblName" runat="server" Text='<%# SomeResource.GetString("name") %>'></asp:Label>

------------

Det var bare liget et par småeksempler... vanligvis kan du også lave en del af arbejdet én gang for alle i en baseklasse for dine forms... så kan du have nogle generelle metoder til den slags, eller måske endda udvide din page_lifecycle med et kald til en metode hvor du fikser det hele... altså overskriver nødvendige tekster for den aktuelle form.... og det bliver så sidste eksempel i denne omgang :

hvis du sikrede pr. baseclass (eller i hver enkelt code-behind) at metoden  LocalizePage() blev kaldt - kunne den fikse lokalisering i repeateren sådan her :

protected void LocalizePage()
{
  foreach(RepeaterItem ri in someRepeater.Items)
  {
    ((Label)ri.FindControl("lblName")).Text = SomeResource.GetString("name");
  }
 
  // og der kunne så være meget andet :
}

---------

håber du kan bruge det til et eller andet.... du skal bare spørge hvis der er noget jeg har for ringe :o)

mvh
(undskyld det tog lidt tid før jeg vendte tilbage)
Avatar billede c-sharp Nybegynder
25. oktober 2004 - 13:17 #6
Men man kan ikke lave flere labels som man kan tilgå på engang?
Avatar billede snepnet Nybegynder
25. oktober 2004 - 18:41 #7
hvis du skriver sådan her i din repeater - bliver det jo kørt for alle linier (selvom du kun skriver det én gang), men en vanlig "pc-cpu" kan jo ikke lave mere end én ting ad gangen alligevel ;o)

<asp:Label id="lblName" runat="server" Text='<%# NameString %>'></asp:Label>

Hvis du har en masse objekter du vil have ændret en property på, vil det altid foregå i et eller andet form for loop alligevel (hvad enten det er en "indbygget" kommandu du kalder, eller noget du skriver selv)...

misforstod jeg dig der ?

mvh
Avatar billede c-sharp Nybegynder
26. oktober 2004 - 13:25 #8
I øveblikket kalder jeg fra hvert label en metode i min codebehind som retunere værdien eks.

<asp:Label id="lblName" runat="server" Text='<%# hentTekst("billede") %>'></asp:Label>
<asp:Label id="lblName" runat="server" Text='<%# hentTekst("billede") %>'></asp:Label>
<asp:Label id="lblName" runat="server" Text='<%# hentTekst("billede") %>'></asp:Label>

Metoden "hentBillede" retunere så værdien der skal stå på de labels.

Jeg vil gerne have så få asp.net tags i min aspx kode, derfor synes jeg at det vil være pænere hvis jeg bare kunne kalde alle de labels det samme og på den måde tilgå dem på engang.

Men dette er ikke muligt? Og hvis ikke er løsningen med metoden der retunere teksten så den den bedste løsning?
Avatar billede snepnet Nybegynder
26. oktober 2004 - 13:33 #9
jeg synes det er en meget fin løsning, hvis du ikke vil lave det hele fra din code-behind (der var nogle eksempler den 22 klokken 17:17).

mvh
Avatar billede c-sharp Nybegynder
26. oktober 2004 - 13:45 #10
Så får du endnu engang mange tak for hjælpen! Smid et svar så er der point.
Avatar billede snepnet Nybegynder
26. oktober 2004 - 13:46 #11
og velbekomme herfra :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