19. juli 2004 - 10:42Der er
27 kommentarer og 1 løsning
Tilføje Labels fra code behind
Hej alle
Hvordan kan jeg tilføje labels fra code behind?
Jeg ved hvordan man tilføjer HTML til siden, men jeg vil gerne lave nogle felter, som jeg kan gøre visible, hvis brugeren ikke har afkrydset noget i form'en.
Denne funktion, skulle så gerne løbe alle felter igennem, og tjekke om de er afkrydset eller lign. Problemet er nemlig at det kan variere, hvor mange felter der skal markeres, og derved varierer det hvor mange labels jeg skal bruge. Normalt kan man jo tilføje en Label ved: Label test = new Label();
Men jeg kan jo ikke bruge den samme variabelnavn, kan jeg?
Er der nogen der kan se en løsning? Det behøver som ikke engang være med labels, men det er bare den nemmeste løsning jeg kan se?
I det eksempel du har skrevet vil den tilføje den til test (hvad det så end er :o). I det eksempel jeg har lavet vil den indsætte dem i rækkefølge under dit <form> tag.
Du kan styre det som du har lyst til... Der er kontroller som Panel og PlaceHolder so du kan trække ind på siden (eller indsætte programmatisk), og så kan du smide dine kontroller (som labels mv.) ind i dem.
Jamen det er netop det samme problem. Hele tabellen som de skal smides ind i, bliver dannet dynamisk. Jeg kan derfor ikke smide hverken panels eller lignende ind et sted i tabellen, som ikke er lavet endnu (før runtime)... Forstår du det, eller...?
Kan jeg så tilgå disse labels på et senere tidspunkt? F.eks. når en bruger trykker på send, og det skal behandles i: private void Button1_Click(object sender, System.EventArgs e)
Jeps. Er det en knap der skal sidde på hver række ? (hvis det er tilfældet kan du udnytte CommandName, og CommandArgument på knappen til at angive ting og sager så du kan "lave det rigtige" i din handler).
Ja det kan jeg da... Jeg fletter det ind i den fra før :
// en eller anden metode til den slags :o) private void SomeMethod(string commandArgument) { Table tbl = new Table(); TableRow tr = null; TableCell tc = null; Button btn = null; Label lbl = null;
for(int i=0;i<10;i++) { tr = new TableRow(); for(int j=0;j<5;j++) { tc = new TableCell(); btn = new Button(); btn.Text = "Klik her";
btn.CommandName = ; // NB ! se forklaring længere nede btn.CommandArgument = i.ToString(); btn.Click += new EventHandler(btn_Click);
lbl = new Label(); lbl.Text = "Se... en knap !"; tc.Controls.Add(lbl);
Og så har handleren sådan her : private void btn_Click(object sender, EventArgs e) { Button button = (Button)sender; int argument = int.Parse(button.CommandArgument); switch(button.CommandName) { case "fester" : DoSomethingCrazy(argument); break; case "bester" : DoSomethingFunny(argument); break; case "test" : DoSomethingIdiotic(argument); break; default: break; } }
Håber du er med på den... Ellers må du sige til.
// Jeg ved ikke om det kan bygge... jeg har bare skrevet det herude.
Nu skal jeg bare bruge radio buttons i stedet. Og det driller lidt.
while (oleDbReader2.Read()) { rl.Items.Add(new ListItem("",oleDbReader2["points"].ToString())); tc = new TableCell(); tc.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center; //Her vil jeg så gerne tilføje en enkelt radio button med værdien som vist ovenfor tc.Style.Add("border-left", "1px dashed #999999"); tr.Cells.Add(tc); }
Jeg prøvede at bruge RadioButton i stedet for RadioButtonList, men der kunne jeg ikke få den til at gruppere radio knapperne. Den sagde at der var flere der havde samme ID. Jeg satte ID'et, fordi det var den eneste der havde indflydelse på radio'en value.
Problemet at jeg ikke kender det ID på forhånd. Det er altså et id, som kommer fra databasen, så jeg bliver vel nødt til at løbe databasen igennem igen, for at få det korrekte ID ud...
Du skulle prøve at tage et lille kig på et datagrid.... Det kan fikse den slags plumming for dig uden de store ballader. Hvis det alligevel er data du populerer fra en database er det som skabt til det :o)
Super :o) Jeg håber det kommer til at fungere som det skal.
Mvh
Synes godt om
Ny brugerNybegynder
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.