Avatar billede slapstick Nybegynder
17. oktober 2008 - 10:11 Der er 7 kommentarer og
1 løsning

check/uncheck treeview checkboxes i asp.net

jeg har en treeview kontrol hvor den skal checke og unchecke checkboxes i childnodes når man checker en checkbox af på en given node..
nogen der har et hurtigt tip til det?
Avatar billede aaberg Nybegynder
17. oktober 2008 - 10:34 #1
Noget lignende dette:

private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
    this.CheckOrUncheckChildNodes(e.Node.Checked, e.Node);
}

private void CheckOrUncheckChildNodes(bool check, TreeNode parentNode)
{
    foreach (TreeNode childNode in parentNode.Nodes)
    {
        childNode.Checked = check;
        this.CheckOrUncheckChildNodes(check, childNode);
    }
}
Avatar billede aaberg Nybegynder
17. oktober 2008 - 10:45 #2
Den første metode er en event handler til "AfterCheck" eventet. Den anden metode den der gør arbejdet. Den checker/unchecker alle childnodes, og kalder sig selv for deres childnodes.
Avatar billede slapstick Nybegynder
17. oktober 2008 - 11:47 #3
Hmm sidder i vs2008 og der er åbenbart ikke AfterCheck eventen
prøvede så sådan her

protected void TreeView1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
        {
           
            this.CheckOrUncheckChildNodes(e.Node.Checked, e.Node);
        }
        private void CheckOrUncheckChildNodes(bool check, TreeNode parentNode)
        {
            foreach (TreeNode childNode in parentNode.ChildNodes)
            {
                childNode.Checked = check;
                this.CheckOrUncheckChildNodes(check, childNode);
            }
        }

men ser ikk eud til at den event nogensinde bliver raised..
Avatar billede aaberg Nybegynder
17. oktober 2008 - 12:33 #4
Jeg overså at dit spørgsmål var til asp.net, så jeg lavede et eksempel til Windows Forms. Min fejl!

Jeg har desværre ikke lige et eksempel på hvordan man kan gøre det i asp.net. Vi må håbe der er andre der kan svare!
Avatar billede slapstick Nybegynder
17. oktober 2008 - 12:36 #5
hehe ok det er fair nok :)
jeg har fundet ud af at treenodecheckchanged først blir raised ved postback
og postback sker åbenbart ikke ved afkrydsning af checkbox
så jeg ved sgu ikke lige hvad man så gør
Avatar billede annxii Nybegynder
17. oktober 2008 - 20:20 #6
hvis det er noget, der skal ske uden et postback til serveren så må du lave noget javascript. Alle checkboxe i asp.net vil være <input> html tags i klientens browser uanset om de er i et treeview eller ej. HTML-standarden har en klient-side event, der hedder "OnChange", som vil blive udført når du checker eller unchecker en checkbox (eller radiobutton). Visual Studio genkender ikke OnChange og vil give dig en "validation message", men tro mig den er der :)

Generalt kan man sige, at de events du i visual studio kan se som små lyn på asp.net-controls, først vil blive udført ved postback. Klient-side events skal udføres med events fra HTML-standarden. I nedenstående link under sektion 18.2.3 kan du se alle disse events.
http://www.w3.org/TR/REC-html40/interact/scripts.html
Avatar billede slapstick Nybegynder
17. oktober 2008 - 21:56 #7
det gør ikke noget at der kommer et postback bare man kan fange når der bliver klikket på en checkbox
men ja ellers må det vel blive javascript..
javascript er ikke ligefrem min stærke side så har ingen ide om hvordan man så sku løbe childnodes igennem og checke/unchecke dem
du har ikke tilfældigvis et eksempel?
Avatar billede slapstick Nybegynder
24. oktober 2008 - 14:54 #8
...
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