Avatar billede jaffafo Nybegynder
16. januar 2006 - 22:23 Der er 9 kommentarer og
1 løsning

Tømme labels og checkbox'er i en fart

Jeg har ca 25 labels og præcis 60 checkboxes i en usercontrol. Jeg vil ved hjælp af en knap tømme alle labels og sætte alle checkbox'es til false.

Det jeg vil undgå er en metode der ligner noget i den her stil:

label1.text = nothing...(25 gange)
checkbox1.enabled = false (60 gange)..

så jeg tænkte om man ikke kan gøre noget smart?

Mine labels hedder fra label1 til label25 så måske kan man køre en For løkke igennem der?

og mine checkbox'es hedder fra
CheckBoxA1 -> CheckBoxA15
CheckBoxB1 -> CheckBoxB15
CheckBoxC1 -> CheckBoxC15
CheckBoxD1 -> CheckBoxD15

Måske man se kan have 4 For løkker her?

Nogle bud/forslag?
Avatar billede snepnet Nybegynder
16. januar 2006 - 22:27 #1
foreach(Control c in this.Controls)
{
  TextBox t = c as TextBox;
  if(t != null)
    t.Text = String.Empty;
  else
  {
    CheckBox cb = c as CheckBox;
    if(cb != null)
      cb.Checked = false;
  }
}

men eller kan du gøre det med en alm resetbutton.
mvh
Avatar billede snepnet Nybegynder
16. januar 2006 - 22:28 #2
altså bare sådan en her:
<input id="Reset1" type="reset" value="reset" />
mvh
Avatar billede jaffafo Nybegynder
16. januar 2006 - 22:29 #3
Problemet er at jeg skal ikke resette ALLE control'er på siden..  kun nogle udvalgte..

Jeg prøver med din første løsning der..
Avatar billede snepnet Nybegynder
16. januar 2006 - 22:33 #4
høh ... og så er det så en Label du skal kigge efter .... og ikke en TextBox - sorry.

sådan her kan du også gøre (så er det ligemeget om du har lagt kontroller i paneler ell.)

for(int i=1;i<=25;i++)
{
  Label lbl = this.FindControl("label+i.ToString()) as Label;
  if(lbl != null)
    lbl.Text = String.Empty;
}

mvh
Avatar billede snepnet Nybegynder
16. januar 2006 - 22:34 #5
Label lbl = this.FindControl("label"+i.ToString()) as Label;
Avatar billede snepnet Nybegynder
16. januar 2006 - 22:35 #6
og ... så kan du jo også lægge dem i en liste ... så har du jo den hvis du skal gøre yderligere med kontrollerne... bruger du asp.net 2.0?
mvh
Avatar billede jaffafo Nybegynder
16. januar 2006 - 22:50 #7
Ja jeg bruger 2.0.

Hvilken liste? :p  Det lyder da "handy" ;)  Du må gerne poste i VB.net hvis det ikke er til besvær :)
Avatar billede snepnet Nybegynder
16. januar 2006 - 23:19 #8
nu ved jeg ikke om du har sat dine kontroller ind deklarativt - eller dynamisk, men hvis du vil have dem i en liste kan du tilføje dem til en.

generics giver dig en enkel måde at gøre det på:

du kan lave dig en liste med en resetmetode på:

public class LabelList : List<Label>
{
    public void Reset()
    {
        foreach (Label label in this)
        {
            label.Text = String.Empty;
        }
    }
}

så kan du oprette din en klassevariabel:

private LabelList Labels = new LabelList();

og der hvor du sætter dine labels ind (eller i page_load ell. hvis du har indsat dem deklarativt):
Labels.Add(label1);
Labels.Add(label2);
Labels.Add(...);

og når du så vil have fjernet indholdet i dine labels:

Labels.Reset();

du kan self. kombinere med det fra tidligere.

på vb ser klassen formentlig sådan her ud:

Public Class LabelList(Of Label) : Inherits List(Of T)
  Public Sub Reset() As Boolean
    'her implementerer du så resetmetoden
  End Sub
End Class

håber du kan oversætte resten.

mvh
Avatar billede jaffafo Nybegynder
10. februar 2006 - 20:07 #9
hejsa..  smider du lige et svar? :)
Avatar billede snepnet Nybegynder
11. februar 2006 - 11:40 #10
jep :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