Как заполнить Treeview node.checked в true или false, получив node.text и установить в true или false - PullRequest
0 голосов
/ 08 октября 2019

У меня есть древовидная структура с именем treeview1 с несколькими дочерними узлами в форме form1, и у каждого узла есть флажок. Я получил проверенный узел и сохранил в базе данных проверенное значение как true и не проверял как false в таблице. мне нужно изменить проверенное значение на true или false, заполнив их в другом дереве с именем treeview2 в форме 2

Мое дерево выглядит примерно так

enter image description here

Форма это я должен изменить эти проверенные значения в другом TreeView2, который находится в форме. Здесь мне нужно получить имя узла и установить True или False из базы данных и заполнить проверенный узел Treeview2.

Примечание. Я сохранил Checked Node в базе данных, отмеченный как True, и не отмечен как False. Из этого я должен изменить его снова, заполнив treeView2, который находится в Form2. Мне нужен только метод, чтобы проверить Node.Text и установить флажок проверено из БД.

Вот код, который собирает все имена узлов в списке

 private IEnumerable<TreeNode> ModifyGetUNNodes(string NodeName, bool nodeVale)
    {
        var checkUnNodes = new List<TreeNode>();
        GetUnNodes(checkUnNodes, ModifyTreeView.Nodes, NodeName, nodeVale);
        return checkUnNodes;
    }

    // Return a list of the TreeNodes that are checked.
    private static void GetNodes(ICollection<TreeNode> checkedNodes, IEnumerable nodes)
    {
        foreach (TreeNode node in nodes)
        {
            checkedNodes.Add(node);

            // Check the node's descendants.
            GetNodes(checkedNodes, node.Nodes);
        }
    }

из кода выше, я получил все именаузел. Здесь мне нужно проверить имя и установить проверенные данные true или false

        var allNodes = ModifyGetNodes();
        var allNodeList = allNodes.Select(node => node.Text).ToList();

сформировать этот узел проверки Текст

 if(node.Text == "Bread")
     node.checked = y.Bread

здесь y.Bread как значение true.

if(node.Text =="Chips")
      node.checked =y.Chips

здесь y.Chips as Value false.

Что-то вроде этого, мне нужно проверить имя и установить проверенное значение в treeview2 в форме 2 enter image description here

Когда я загружаю Form2, мне нужно проверить узел, получив базу данных формы данных

Примечание: я сохранил Node Bread Checked как true в Column Bread как (true) и Wine, который не отмечен, так чтосохранит в столбце Wine как (False).

1 Ответ

0 голосов
/ 08 октября 2019

Вот код, который я получил Ответ


    private IEnumerable<TreeNode> ModifyGetUNNodes(string NodeName, bool nodeVale)
        {
            var checkUnNodes = new List<TreeNode>();
            GetUnNodes(checkUnNodes, ModifyTreeView.Nodes, NodeName, nodeVale);
            return checkUnNodes;
        }

        // Return a list of the TreeNodes that are checked.
        private static void GetNodes(ICollection<TreeNode> checkedNodes, IEnumerable nodes, string nodeName, bool checkValue)
        {
            foreach (TreeNode node in nodes)
            {
                if(node.Text == nodeName)
                   node.Checked = checkValue;

                // Check the node's descendants.
                GetNodes(checkedNodes, node.Nodes);
            }
        }

В этом коде я просто передал еще два аргумента и проверил Node.text и установил его как проверенный и непроверенный из значений столбцов данных.

Теперь я вызываю функцию с передачей args имени узла и проверенного значения

Пример:

    var getData = DbContext.tblMenu.Select(x => x).ToList();
   foreach(var y in getData)
    {
     ModifyGetUNNodes("Bread", y.Bread.value);
    }

Здесь y.Bread - это имя столбца, который содержитпроверенное значение (True или False).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...