Avatar billede kennethv Nybegynder
14. juli 2009 - 11:37 Der er 13 kommentarer og
1 løsning

Tjek af mange Checkboxe

Jeg har en masse checkboxe på en ASPX side som jeg gerne vil tjekke om der er et "flueben" i.


Hvordan kan det gøres?
Avatar billede skov_p Praktikant
14. juli 2009 - 12:11 #1
foreach(Controls ctrl in this.Controls){
  if(ctrl is CheckBox && (ctrl as CheckBox).Checked)
  // Gør noget
  else
  // Gør noget andet
}
Avatar billede kalp Novice
14. juli 2009 - 12:19 #2
skov_p >> den er ikke god:) tænk hvis han har noget i et panel eller placeholder;)

protected void Page_Load(object sender, EventArgs e)
    {
        checkAll(this); 
    }
    private void checkAll(Control control) {
        if (control is CheckBox) (control as CheckBox).Checked = true;
        foreach (Control currentControl in control.Controls) {
            checkAll(currentControl);
        }
    }
Avatar billede kalp Novice
14. juli 2009 - 12:20 #3
kennethv >> mit kode eksempel er rekursivt og det vil finde samtlige checkbox controls på din aspx side og checke dem af:)
Avatar billede kalp Novice
14. juli 2009 - 12:26 #4
ops.. du vil gerne check om der er flueben i dem:D så skal du lige:

protected void Page_Load(object sender, EventArgs e)
    {
        checkAll(this); 
    }
    private void checkAll(Control control) {
        if (control is CheckBox && (control as CheckBox).Checked) {
//den er checked
}
        foreach (Control currentControl in control.Controls) {
            checkAll(currentControl);
        }
    }
Avatar billede kennethv Nybegynder
14. juli 2009 - 12:50 #5
Hmm, jeg tror ikke at jeg helt har forklaret, hvad jeg ville.

Jeg har en side, som skal bruges, når man skal oprette en bruger i vores systemer. På denne side skal man bla vælge hvilke programmer brugeren skal have. De programmer er tilknyttet en checkbox. Jeg skal så tjekke de her checkboxe for at se hvilke programmer det så er. Skal så samle det info og putte det i en string og smide det ind i en SQL db.
Avatar billede kalp Novice
14. juli 2009 - 13:26 #6
Det sidste du fik burde sådan set også være tilstrækkeligt for dig hvis du så selv gad dig et minut eller to til og tænke over den resterende løsning.

Det er lige netop i denne del af koden:
    if (control is CheckBox && (control as CheckBox).Checked) {
//den er checked
}

du skal løse dit sidste problem.

Du må jo oprette en String variable i toppen af din side, som du appender din tekst til løbende.
Avatar billede kennethv Nybegynder
14. juli 2009 - 13:31 #7
Ja, ja, jeg skal nok. Det var nu mere fordi at jeg ikke selv syntes at det jeg havde skrevet var specielt forklarende. :)
Avatar billede kalp Novice
14. juli 2009 - 13:33 #8
Det var det heller ikke hehe:D
Avatar billede kennethv Nybegynder
14. juli 2009 - 13:34 #9
Vil dog lige høre hvordan den der if sætning adskiller de forskellige checkboxe. Jeg aner ikke en bjælde om C#. Hvordan kan den se forskellen på de checkboxe.
Avatar billede kalp Novice
14. juli 2009 - 13:41 #10
Du kan f.eks skrive sådan her:

<asp:CheckBox ID="CheckBox1" runat="server"  ValidationGroup="GroupOne" />

<asp:CheckBox ID="CheckBox2" runat="server"  ValidationGroup="GroupOne" />

<asp:CheckBox ID="CheckBox3" runat="server"  ValidationGroup="GroupTwo" />

<asp:CheckBox ID="CheckBox4" runat="server"  ValidationGroup="GroupTwo" />


Dermed har du nærmest grupperet CheckBox1 og 2 til og være i samme gruppe.
Og CheckBox3 og 4 i gruppe sammen.

Du kan tilføje et ekstra tjek til min kode til og tjekke om du har fat i den rigtige gruppe - f.eks vil du kun have fat i 'GroupOne' checkboxene..

(control as CheckBox).ValidationGroup == "GroupOne"


den skal selvfølgelig in i en if sætning.
Avatar billede kennethv Nybegynder
14. juli 2009 - 14:14 #11
Kalp: Du får point, idet at jeg er sikker på at det virker. Men osse fordi at jeg har startet forkert ud mht rækkefølge af mit problem. Faktisk er det sådan at jeg gerne vil have oprettet checkboxe dynamisk afhængig af indhold af min databse. Jeg har så set CheckBoxList. Umiddelbart set det jo nemt nok at finde data fra databasen, men jeg kunne godt tænke mig at lave 3 kolonner med checkboxe, for lige nu kommer de bare i en lang kolonne.
Avatar billede kalp Novice
14. juli 2009 - 15:39 #12
Der er en control der hedder "PlaceHolder".
Dem kan du evt. oprette 3 af på din ASPX side - placere dem ved siden af hinanden, som du ønsker.

Hvis du ikke er god til div's og styles skal du lægge dem i hver sin kolonne i en tabel.
Dermed kommer de til og ligge ved siden af hinanden.

du kan så tilføje CheckBox'e dynamisk til disse placeholders fra codebehind.

Du opretter blot dine checkbox i codebehind (de hedder det samme, husk at tilføje korrekt namespace i using).
og tilføjer dem til dine placerholders med

placeholder1.Controls.Add(checkbox1);
Avatar billede windcape Praktikant
14. juli 2009 - 17:46 #13
Og et eksempel på hvordan du kan checke om alle er checket uden at benytte en ValidationGroup:

bool allChecked = placeholder1.Controls.OfType<CheckBox>().Count(c => !c.Checked) == 0;
Avatar billede kennethv Nybegynder
16. juli 2009 - 16:23 #14
Jeg har fundet CheckBoxList. Den ser ud til at kunne det jeg vil. Jeg har tilknyttet dens DataSourceID = SqlDataSource1. Jeg har en ide om at men kan ændre CheckBoxList's output ved at ændre SqlDataSource1's SelectQuery, men jeg ved ikke lige hvordan. Jeg har oprettet en anden opgave med mit spørgsmål.
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