Member 14141512 Ответов: 0

Как я могу это сделать проверить дочерние узлы в treeview если родительский узел проверен


Я работаю с Asp.net и используйте treeview.Я хочу сделать это, если родительский узел проверен, то все дочерние узлы проверяются автоматически.Кроме того, если один или несколько дочерних узлов проверяются, родительский узел проверяется.

Что я уже пробовал:

Я погуглил и попробовал использовать событие AfterCheck, но у моего treeview такого метода нет.Тогда я попробовал
чтобы использовать событие changechecked, но оно не работает.Мои коды ниже:

<asp:TreeView ID="TreeView1" runat="server" Width="189px"></asp:TreeView>


protected void Create_PermissionsTreeView()
        { 
            DataTable dt = new DataTable();
            dt = Convert_ActionDatatoDataTable();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (dt.Rows[i]["PARENT_CODE"].ToString() == "0") 
                {
                    TreeNode node = new TreeNode();
                    node.ShowCheckBox = true;
                    node.Text = dt.Rows[i]["NAME_AZ"].ToString();
                    node.Value = dt.Rows[i]["ID"].ToString();
                    TreeView1.Nodes.Add(node);
                    foreach (DataRow row1 in dt.Rows)
                    {
                        if (row1["PARENT_CODE"].ToString() == dt.Rows[i]["CODE"].ToString())
                        {
                            TreeNode childnode = new TreeNode();
                            childnode.ShowCheckBox = true;
                            childnode.Text = row1["NAME_AZ"].ToString();
                            childnode.Value = row1["ID"].ToString();
                            TreeView1.Nodes[i].ChildNodes.Add(childnode);
                        }
                    }
                }
            }
        }


protected void TreeView1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
        {
            foreach (TreeNode childNode in e.Node.ChildNodes)
            {
                childNode.Checked = e.Node.Checked;

            }
        }


Пожалуйста, помогите мне..

Ralf Meier

В данный момент у меня нет VS, чтобы проверить мой ответ, но вы можете попробовать внутри своего метода 'CheckedChanged' использовать 'e.SelectedNode.ChildNodes' вместо 'e.Node.ChildNodes'.
Также замените 'e.Node.Проверил" С "Е.Выбранный узел.Проверено".
Поскольку я не могу проверить это, я не публикую его в качестве ответа ...

0 Ответов