复制 TreeView 的未标记行以创建现有 TreeView 的副本

本文关键字:TreeView 创建 副本 复制 | 更新日期: 2023-09-27 17:56:00

嗨,我

真正的朋友. 谢谢你和我最喜欢的 StackOverFlow.com

我有一个 TreeView 控件来查看一些分层数据。如您所知,有一个底层数据表(基于 SQL 服务器表)作为此 TreeVeiw 的数据源。

我的

问题是:如何将一个根和整个叶子复制为我的 TreeView 的新分支。

我认为复制 TreeView 节点很简单(通过使用 TreeNode Clone() 方法)。但是底层数据表呢?如何将整个树行复制到同一个表中?ID列是身份,但如何根据表中最近插入的父行设置ParentID列?

提前致谢

复制 TreeView 的未标记行以创建现有 TreeView 的副本

最直接的方法是使用递归方法来迭代克隆的树节点。 每个节点将在 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);
            }
        }
    }
}
}