Повторяющиеся недостоверные строки TreeView для создания копии существующего TreeView - PullRequest
2 голосов
/ 11 мая 2011

привет лучшим моим настоящим друзьям.спасибо и мой любимый StackOverFlow.com

У меня есть элемент управления TreeView для просмотра некоторых иерархических данных.как вы знаете, существует базовый DataTable (основанный на таблице сервера SQL) в качестве источника данных для этого TreeVeiw.

Моя проблема заключается в том, как дублировать один корень и все его листья в качестве новой ветви моего TreeView.

дублирование узла TreeView, я думаю, довольно просто (с помощью метода TreeNode Clone ()).а как насчет базового DataTable?Как скопировать все строки дерева в одну таблицу?столбец идентификатора идентичен, но как установить базу столбца ParentID для недавно вставленной родительской строки в таблице?

Заранее спасибо

1 Ответ

1 голос
/ 11 мая 2011

Наиболее прямым подходом является использование рекурсивного метода, который повторяет клонированные узлы дерева.Каждый узел найдет и обновит свою собственную запись в объекте DataTable.Вот базовый код для WinForm:

using System;
using System.Data;
using System.Windows.Forms;

namespace Demo {
    public class TestClass {
        DataTable table;

        public void Initialize() {
            table = new DataTable();
            table.Columns.Add("ID", typeof(int));
            table.Columns.Add("ParentID", typeof(int));
            table.Columns.Add("Text", typeof(String));
        }

        private void UpdateTreeData(TreeNode parentNode) {
            int parentId = Convert.ToInt32(parentNode.Tag);
            int childId;
            foreach (TreeNode n in parentNode.Nodes)
            {   // Assuming Tag contains the table ID value...
                childId = Convert.ToInt32(n.Tag);
                table.Select("ID = " + childId.ToString())[0]["ParentID"] = parentId;
                UpdateTreeData(n);
            }
        }
    }
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...