web 的TreeView控件中怎么动态添加子节点呢?

sysysnapping 2004-09-10 11:02:05
web 的TreeView控件中怎么动态添加子节点呢?比如说我的根节点是a, 然后我需要动态在a这个根节点下添加aa和ab。谢谢大虾!
...全文
435 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
nehu 2004-10-08
  • 打赏
  • 举报
回复
/// <summary>
/// 在当前树中插入一个新节点,Irelation参数:-1、0分别代表要插入的是选中节点的
/// 子节点、兄弟结点;Ipos参数:0、1分别代表要插入节点在选中节点的上面、下面。
/// </summary>
/// <param name="tr"></param>
/// <param name="Irelation"></param>
/// <param name="Ipos"></param>
public void InsertNode(TreeView tr,int Irelation,int Ipos)
{
//判断输入参数的是否在合法范围。
if (Irelation>=-1 && Irelation<=0)
{
//定义一个节点变量。
TreeNode ParentNode;

//获得给定树的当前选中节点的索引好。
//并将该索引号转化成数组存入strarrayNode数组变量中。
string strNodeIndex = tr.SelectedNodeIndex.ToString();
string[] strarrayNode=strNodeIndex.Split( '.' );

//要插入的是兄弟节点。
if (Irelation==0)
{
//取得当前节点在兄弟节点中的位置。
int index = Convert.ToInt32(strarrayNode[strarrayNode.Length-1]);

//当前选中节点不是根节点。
if ((strarrayNode.Length-Irelation)>1)
{
//根据索引号中的第一位索引取得一个根节点对象。
ParentNode = tr.Nodes[Convert.ToInt32(strarrayNode[0])];

//逐个递推直到选中节点的父节点。
for (int I=1;I<strarrayNode.Length-Irelation-1;I++)
{
ParentNode = ParentNode.Nodes[Convert.ToInt32(strarrayNode[I])];
}

//将新节点插在选中节点的旁边(上面或下面)。
TreeNode Node = new TreeNode();
Node.Text = ParentNode.GetNodeIndex().ToString();
Node.NodeData="0";
ParentNode.Nodes.AddAt(index+Ipos,Node);
}
//当前选中节点是根节点。
else
{
//将新的根节点插在选中根节点的旁边(上面或下面)
TreeNode Node = new TreeNode();
Node.Text = strNodeIndex;
Node.NodeData="0";
tr.Nodes.AddAt(index+Ipos,Node);
}
}
//要插入的是子节点。
else
{
//根据索引号中的第一位索引取得一个根节点对象。
ParentNode = tr.Nodes[Convert.ToInt32(strarrayNode[0])];

//逐个递推直到选中的节点
for (int I=1;I<strarrayNode.Length-Irelation-1;I++)
{
ParentNode = ParentNode.Nodes[Convert.ToInt32(strarrayNode[I])];
}
//在选中节点下插入一个字节点。
TreeNode Node = new TreeNode();
Node.Text = ParentNode.GetNodeIndex().ToString();
Node.NodeData="0";
ParentNode.Nodes.Add(Node);

}
}
else
{
//输入参数超出边界
return;
}
}
tech_leader 2004-09-21
  • 打赏
  • 举报
回复
public void addnode(string strpa,TreeNode strnode)
{
int treecount=0;
TreeNode mynode=new TreeNode ();
for(int i=0;i<dv.Count ;i++)
{
if(dv[i]["ParentCode"].ToString ()==strpa.ToString ())
{
mynode.Text =dv[i]["Description"].ToString ();
mynode.CheckBox =true;
string chuanzhi=dv[i]["ZoneCode"].ToString ();
mynode.Target ="zonemange";
mynode.NavigateUrl ="WebForm4.aspx?cznode="+chuanzhi;
mynode.Expanded =true;
strnode.Nodes .AddAt (treecount,mynode);
addnode(chuanzhi,strnode.Nodes [treecount]);

treecount=treecount+1;
mynode=new TreeNode ();
}
}
}
happyjun2000 2004-09-21
  • 打赏
  • 举报
回复
你也可以动态的生成xml,然后绑定xml为tree的数据源。
yuchangle 2004-09-21
  • 打赏
  • 举报
回复
TreeNode node=new TreeNode();
node.Text="新节点";
this.treeView1.SelectedNode.Nodes.Add(node);
刚才搜索时看到你的问题,我自己试了一下,上面的代码好用,不知道你自己解决没有
zhjboss 2004-09-11
  • 打赏
  • 举报
回复
private void initree(TreeNodeCollection nds,string parantid)
{
dataview dv=new dataview();
TreeNode tmpnd;
string intid;
dv.table=ds.table["tree"];
dv.RowFilter="Parantid=""+paraentid+""";
foreach(dataview drv in dv)
tmpdn=new treenode();
tmpnd.id=drv["nodeid"].tostring();
tmpnd.text=drv["nodename"].tostring();
tmpnd.imageurl="../images/"+drv["icon"].tostring();
tmpnd.navigateurl="../"+drv["address"].tostring();
nds.add(tmpnd);
intid=drv["parantid"].tostring();
initree(tmpnd.nodes,tmpnd.id);
}
}
marvelstack 2004-09-11
  • 打赏
  • 举报
回复
写法跟windows下的Treeview是一样的
//第归填充TreeView
protected void InitTreeView(int parentID,DataTable dt,TreeNode parentNode)
{
foreach(DataRow dr in dt.Select("ParentID = " + parentID))
{
TreeNode currentNode = new TreeNode();
currentNode.Text = (string)dr["CategoryName"];
currentNode.ImageUrl = "Images/TreeView_folder.gif";
currentNode.NavigateUrl = String.Format("?CategoryID={0}",dr["CategoryID"].ToString());
currentNode.Expanded = true;
InitTreeView((int)dr["CategoryID"],dt,currentNode);
parentNode.Nodes.Add(currentNode);
}
}
marvelstack 2004-09-11
  • 打赏
  • 举报
回复
TreeView TreeView1 = new TreeView();
//if(!Page.IsPostBack)
//{
//获取目录数据集
CategorySet ds = ArticleSystem.Instance().Categories;

DataTable categoryTable = ds.Tables[0];
//获取根目录
int rootID = ArticleSystem.Instance().GetRootCategoryID(CategoryID);
DataRow [] drs = categoryTable.Select("CategoryID = " + rootID);
if(drs != null && drs.Length >0)
{
//获取根节点
DataRow dr = drs[0];

TreeNode rootNode = new TreeNode();
rootNode.Text = (string)dr["CategoryName"];
rootNode.ImageUrl = "Images/TreeView_base.gif";

rootNode.NavigateUrl = String.Format("?CategoryID={0}",dr["CategoryID"].ToString());

rootNode.Expanded = true;


//第归实例化TreeView
InitTreeView((int)dr["CategoryID"],categoryTable,rootNode);
TreeView1.Nodes.Add(rootNode);
TreeView1.SystemImagesPath="../aspnet_client/webctrl_client/1_0/treeimages/";
//TreeView1.SelectedStyle = TreeView1.DefaultStyle;
}
//}
amami 2004-09-10
  • 打赏
  • 举报
回复
777kit 2004-09-10
  • 打赏
  • 举报
回复
http://dev.csdn.net/article/36/36361.shtm
777kit 2004-09-10
  • 打赏
  • 举报
回复
TreeNode node = tv_Doc.GetNodeFromIndex(tv_Doc.SelectedNodeIndex);
Treeview.Nodes.Add(new TreeNode());
sysysnapping 2004-09-10
  • 打赏
  • 举报
回复
这个在同一等级上添加阿!我要的是子节点
chen9771 2004-09-10
  • 打赏
  • 举报
回复
TreeNode node=new TreeNode();
Treeview.Nodes.Add(node);
sysysnapping 2004-09-10
  • 打赏
  • 举报
回复
在线等~~~~~~~~
humin1906 2004-09-10
  • 打赏
  • 举报
回复
TreeNode tnSon = new TreeNode();
tnSon.Expanded = true;
TreeView.Nodes.Add(tnSon);
zhjboss 2004-09-10
  • 打赏
  • 举报
回复
学习

110,571

社区成员

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

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

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