![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
c# form窗体,动态实现Treeview节点的添加和删除,节点所需信息首先导入数据库,然后从数据库提取显示。谢
1个回答
展开全部
//窗口载入
private void RelayMesFrm_Load(object sender, EventArgs e)
{
TreeViewBind(); //绑定数据到Treeview的方法
t_tvw_relay.ExpandAll(); //展开所有节点
}
//这个方法是根据我用到的情况写的。算上根节点一共才能三级节点,一级节点只有五个。所以新建了一个类型去保存。没有用到数据库,二级节点是从数据库中调出来的,根节点是手动创建的。
private void TreeViewBind() //绑定数据到Treeview的方法
{
TreeNode pNode = new TreeNode(); //新建根节点
pNode.Text = "指令类型";
pNode.Name = "0";
t_tvw_relay.Nodes.Add(pNode);
foreach (var m in tn.dn) //绑定一级节点
{
TreeNode node = new TreeNode();
node.Text = m.Value.ToString();
node.Name = m.Key.ToString();
pNode.Nodes.Add(node);
foreach (var n in dalrelay.getInstance().GetList()) //绑定二级节点
{
if (n.code.ToString() == node.Name && n.parentid == 0) //条件,二级节点和一级节点的关系
{
TreeNode nodesql = new TreeNode();//新建二级节点
nodesql.Text = n.name.ToString();
nodesql.Name = n.id.ToString();
node.Nodes.Add(nodesql);
}
}
}
}
然后比如加一个删除的代码:
//TreeView右键删除事件
private void t_cms_delete_Click(object sender, EventArgs e)
{
List<relay> pd = new List<relay>(); //这是我新建的一个类。就是调用数据库中的数据用的。
pd = dal_model.Getlist().FindAll(m => m.parentid.ToString() == model.te.Name);//查出当前选中节点的ID和数据库中该ID对应的数据
if (pd.Count != 0)
{
MessageBox.Show("该节点下有数据,不可删除!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
dal_model.delete_relay(model.te.Name.ToString());//删除方法
TreeViewBind(); //注意这里,这就是解决你问题的地方了,重新调用方法就可以
t_tvw_relay.ExpandAll(); //展开所有节点
}
}
添加节点也一样,就是这个意思。希望你是用数据库绑定Treeview的。要不我的方法就帮不到你了。。别人那转发过来的。。。
private void RelayMesFrm_Load(object sender, EventArgs e)
{
TreeViewBind(); //绑定数据到Treeview的方法
t_tvw_relay.ExpandAll(); //展开所有节点
}
//这个方法是根据我用到的情况写的。算上根节点一共才能三级节点,一级节点只有五个。所以新建了一个类型去保存。没有用到数据库,二级节点是从数据库中调出来的,根节点是手动创建的。
private void TreeViewBind() //绑定数据到Treeview的方法
{
TreeNode pNode = new TreeNode(); //新建根节点
pNode.Text = "指令类型";
pNode.Name = "0";
t_tvw_relay.Nodes.Add(pNode);
foreach (var m in tn.dn) //绑定一级节点
{
TreeNode node = new TreeNode();
node.Text = m.Value.ToString();
node.Name = m.Key.ToString();
pNode.Nodes.Add(node);
foreach (var n in dalrelay.getInstance().GetList()) //绑定二级节点
{
if (n.code.ToString() == node.Name && n.parentid == 0) //条件,二级节点和一级节点的关系
{
TreeNode nodesql = new TreeNode();//新建二级节点
nodesql.Text = n.name.ToString();
nodesql.Name = n.id.ToString();
node.Nodes.Add(nodesql);
}
}
}
}
然后比如加一个删除的代码:
//TreeView右键删除事件
private void t_cms_delete_Click(object sender, EventArgs e)
{
List<relay> pd = new List<relay>(); //这是我新建的一个类。就是调用数据库中的数据用的。
pd = dal_model.Getlist().FindAll(m => m.parentid.ToString() == model.te.Name);//查出当前选中节点的ID和数据库中该ID对应的数据
if (pd.Count != 0)
{
MessageBox.Show("该节点下有数据,不可删除!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
dal_model.delete_relay(model.te.Name.ToString());//删除方法
TreeViewBind(); //注意这里,这就是解决你问题的地方了,重新调用方法就可以
t_tvw_relay.ExpandAll(); //展开所有节点
}
}
添加节点也一样,就是这个意思。希望你是用数据库绑定Treeview的。要不我的方法就帮不到你了。。别人那转发过来的。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询