TreeView间复制、删除问题?

jeall 2004-01-06 05:39:52
TreeView1结构: TreeView2结构:
-Root1 -Root1
|- T1 |- T1
|-aa 按钮-> |-bb
|-bb
|-cc
|- T2
|- T3
-Root2
|- U1
|- U2
|- U3
-Root3
TreeView1不是从数据库中获取的数据
1、点中TreeView1中 Root1-T1-bb后,点击按钮->得到TreeView1.SelectedNodeIndex=0.0.1,保存到TreeView2中,节点没有的添加,并且添加入TreeView2的时候需要判断数据内容的重复,层次结构还不能变!
我觉得应该用递归,我是从根0先出发,可是递归下去后越走反而觉得复杂了!大家给点思路吧!
2、怎样删除TreeView2中的节点?
...全文
71 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jeall 2004-01-09
  • 打赏
  • 举报
回复
谢谢 marising(垃圾桶) !
我已经解决了!tv1、tv2 !
jeall 2004-01-07
  • 打赏
  • 举报
回复
这是我文件的源代码,但是没有实现你说的功能!页面没反应~1
jeall 2004-01-07
  • 打赏
  • 举报
回复
=================*.aspx.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

using Microsoft.Web.UI.WebControls;

namespace Importent.TreeView
{
/// <summary>
/// 两棵树间传递数据 的摘要说明。
/// </summary>
public class 两棵树间传递数据 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Button Button2;
protected Microsoft.Web.UI.WebControls.TreeView tv1;
protected Microsoft.Web.UI.WebControls.TreeView tv2;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void Button1_Click(object sender, System.EventArgs e)
{
TreeNode parentNode1 = tv1.Nodes[Convert.ToInt32(tv1.SelectedNodeIndex[0].ToString())];
TreeNode parentNode2 = GetRootNode(parentNode1.Text);
if(parentNode2==null)
{
parentNode2 = new TreeNode();
parentNode2.Text = parentNode1.Text;
tv2.Nodes.Add(parentNode2);
}
if(tv1.SelectedNodeIndex.Length>1)
AddNodes(parentNode1,parentNode2,tv1.SelectedNodeIndex.Remove(0,2));
}

private void AddNodes(TreeNode parentNode1,TreeNode parentNode2,string nodeIndex)
{
if(nodeIndex!="")
{
TreeNode childNode1 = parentNode1.Nodes[Convert.ToInt32(nodeIndex[0].ToString())];
TreeNode childNode2 = GetChildNode(parentNode2,childNode1.Text);
if(childNode2==null)
{
childNode2 = new TreeNode();
childNode2.Text = childNode1.Text;
parentNode2.Nodes.Add(childNode2);
}
if(nodeIndex.Length>1)
{
nodeIndex = nodeIndex.Remove(0,2);
AddNodes(childNode1,childNode2,nodeIndex);
}
}
}

private TreeNode GetChildNode(TreeNode parentNode,string nodeText)
{
foreach(TreeNode node in parentNode.Nodes)
{
if(node.Text==nodeText)
return node;
}
return null;
}

private TreeNode GetRootNode(string nodeText)
{
foreach(TreeNode node in tv2.Nodes)
{
if(node.Text==nodeText)
return node;
}
return null;
}

private void Button2_Click(object sender, System.EventArgs e)
{
tv2.GetNodeFromIndex(tv2.SelectedNodeIndex).Remove();
}
}
}
jeall 2004-01-07
  • 打赏
  • 举报
回复
===============*.aspx
<%@ Page language="c#" Codebehind="两棵树间传递数据.aspx.cs" AutoEventWireup="false" Inherits="Importent.TreeView.两棵树间传递数据" %>
<%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls, Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<meta name="vs_showGrid" content="False">
<title>两棵树间传递数据</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<TABLE id="Table1" cellSpacing="1" cellPadding="1" width="100%" border="1">
<TR>
<TD vAlign="top" width="30%">
<iewc:TreeView id="tv1" runat="server">
<iewc:TreeNode Text="Root1">
<iewc:TreeNode Text="Node11">
<iewc:TreeNode Text="Node11_21"></iewc:TreeNode>
<iewc:TreeNode Text="Node11_22"></iewc:TreeNode>
</iewc:TreeNode>
<iewc:TreeNode Text="Node12"></iewc:TreeNode>
<iewc:TreeNode Text="Node13"></iewc:TreeNode>
</iewc:TreeNode>
<iewc:TreeNode Text="Root2"></iewc:TreeNode>
<iewc:TreeNode Text="Root3"></iewc:TreeNode>
</iewc:TreeView></TD>
<TD width=30%>
<P>
<asp:Button id="Button1" runat="server" Text="tv1 to tv2"></asp:Button></P>
<P>
<asp:Button id="Button2" runat="server" Text="tv2 delete treenode"></asp:Button></P>
</TD>
<TD vAlign="top" width=30%>
<iewc:TreeView id="tv2" runat="server" AutoPostBack="True">
<iewc:TreeNode Text="AA"></iewc:TreeNode>
</iewc:TreeView></TD>
</TR>
</TABLE>
</FONT>
</form>
</body>
</HTML>
silverduck 2004-01-07
  • 打赏
  • 举报
回复
guanzhu
qimini 2004-01-07
  • 打赏
  • 举报
回复
倒~~~用拖放不是更方便吗?
acewang 2004-01-07
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2093/2093882.xml?temp=.8910639
Coder李海波 2004-01-07
  • 打赏
  • 举报
回复
tv1表示TreeView1,tv2表示TreeView2
button1移动节点,button2是删除tv2选中的节点
有什么问题发短信息给我
Coder李海波 2004-01-07
  • 打赏
  • 举报
回复
private void Button1_Click(object sender, System.EventArgs e)
{
TreeNode parentNode1 = tv1.Nodes[Convert.ToInt32(tv1.SelectedNodeIndex[0].ToString())];
TreeNode parentNode2 = GetRootNode(parentNode1.Text);
if(parentNode2==null)
{
parentNode2 = new TreeNode();
parentNode2.Text = parentNode1.Text;
tv2.Nodes.Add(parentNode2);
}
if(tv1.SelectedNodeIndex.Length>1)
AddNodes(parentNode1,parentNode2,tv1.SelectedNodeIndex.Remove(0,2));
}

private void AddNodes(TreeNode parentNode1,TreeNode parentNode2,string nodeIndex)
{
if(nodeIndex!="")
{
TreeNode childNode1 = parentNode1.Nodes[Convert.ToInt32(nodeIndex[0].ToString())];
TreeNode childNode2 = GetChildNode(parentNode2,childNode1.Text);
if(childNode2==null)
{
childNode2 = new TreeNode();
childNode2.Text = childNode1.Text;
parentNode2.Nodes.Add(childNode2);
}
if(nodeIndex.Length>1)
{
nodeIndex = nodeIndex.Remove(0,2);
AddNodes(childNode1,childNode2,nodeIndex);
}
}
}

private TreeNode GetChildNode(TreeNode parentNode,string nodeText)
{
foreach(TreeNode node in parentNode.Nodes)
{
if(node.Text==nodeText)
return node;
}
return null;
}

private TreeNode GetRootNode(string nodeText)
{
foreach(TreeNode node in tv2.Nodes)
{
if(node.Text==nodeText)
return node;
}
return null;
}

private void Button2_Click(object sender, System.EventArgs e)
{
tv2.GetNodeFromIndex(tv2.SelectedNodeIndex).Remove();
}
jeall 2004-01-07
  • 打赏
  • 举报
回复
TreeView1结构: TreeView2结构:
-Root1 -Root1
|- T1 |- T1
|-aa 按钮-> |-bb
|-bb
|-cc
|- T2
|- T3
-Root2
|- U1
|- U2
-Root3
jeall 2004-01-07
  • 打赏
  • 举报
回复
marising,
tv1中的节点已经可以传递到tv2中了,但是,tv2就是显示不出来内容!
jieall 2004-01-07
  • 打赏
  • 举报
回复
UP
wd_318 2004-01-06
  • 打赏
  • 举报
回复
可惜看不清楚啊

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧