复制 TreeView 的未标记行以创建现有 TreeView 的副本
本文关键字:TreeView 创建 副本 复制 | 更新日期: 2023-09-27 17:56:00
嗨,我
真正的朋友. 谢谢你和我最喜欢的 StackOverFlow.com
我有一个 TreeView 控件来查看一些分层数据。如您所知,有一个底层数据表(基于 SQL 服务器表)作为此 TreeVeiw 的数据源。
我的问题是:如何将一个根和整个叶子复制为我的 TreeView 的新分支。
我认为复制 TreeView 节点很简单(通过使用 TreeNode Clone() 方法)。但是底层数据表呢?如何将整个树行复制到同一个表中?ID列是身份,但如何根据表中最近插入的父行设置ParentID列?
提前致谢
最直接的方法是使用递归方法来迭代克隆的树节点。 每个节点将在 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);
}
}
}
}
}