C#里treeview如何向指定NAME节点添加子节点?

C#里treeview如何向指定NAME节点添加子节点?,第1张

C#里treeview向指定NAME节点添加子节点时应就这样做:

先要用treenode定义节点对象。

TreeView1.SelectedNode.ChildNodes.Add //给选中的添加。

TreeView1.Nodes[index].ChildNodes.Add //给指定index的节点添加。

TreeView控件用来显示信息的分级视图,如同Windows里的资源管理器的目录。TreeView控件中的各项信息都有一个与之相关的Node对象。

TreeView显示Node对象的分层目录结构,每个Node对象均由一个Label对象和其相关的位图组成。在建立TreeView控件后,我们可以展开和折叠、显示或隐藏其中的节点。

TreeView控件一般用来显示文件和目录结构、文档中的类层次、索引中的层次和其他具有分层目录结构的信息。

原因很明显,当有新增的节点,Items已经发生了改变,所以你的items[x]是一个变量而非常量。

一个最笨的办法就是,在没有添加任何子节点前,把节点用StaticNodes:array of TTreeNode数组保存起来,然后再通过StaticNodes[x].AddChild进行添加。

如果想动态一点就得加一个搜索功能(TreeView控件并没有附带节点搜索功能),你添加子节点前得手动查询到父节点。

以下是一个比较简单的方法:

function FindNodeByText(aTree:TTreeViewtheTexts:String):TTreeNode

var

i:Integer

begin

Result:=NIL

for i:=0 to aTree.Items.Count-1 do

if aTree.Items[i].Text=theTexts then

begin

Result:=aTree.Items[i]

Break

end

end

查询的方法有很多更有效率的

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

我在Page_load事件中生成根节点和一级子节点,想实现点击某个一级子节点则会出现与之对应的二级子节点。但现在我的问题是点击后不但出现二级子节点,连根节点和一级子节点也同时又生成了。应该怎样解决这个问题?谢谢指点!

解析:

给个生成树的代码你参考下

在page_load中调用这个方法InitTree(树控件的根结点,根结点的ID)

#region 建树的基本思路是:从根节点开始递归调用显示子树

private void InitTree(TreeNodeCollection Nds,string parentId)

{

形成树前,先清除当前树

Nds.Clear()

DataView dv=new DataView()

TreeNode tmpNd

string intId

dv.Table=ds.Tables[0]

dv.RowFilter="prior_layerid=" + parentId + ""

string Ls_type

foreach(DataRowView drv in dv)

{

tmpNd=new TreeNode()

tmpNd.ID=drv["layerid"].ToString()

tmpNd.Text=drv["layer_name"].ToString()

if(drv["t_expanded"].ToString() == "1")

tmpNd.Expanded = true

else

tmpNd.Expanded = false

tmpNd.ImageUrl = "images/f_close"

tmpNd.ExpandedImageUrl = "images/f_close"展开节目显示图片

tmpNd.SelectedImageUrl = "images/select"选择节点显示图片

传递当前选择层的ID号,好显示该层有那些子层

Ls_type = drv["tabletype"].ToString()

if (Ls_type == "layer")

{

tmpNd.NavigateUrl = "layerx" + "?id=" + drv["layerid"].ToString()

}

else if(Ls_type == "title")

{

tmpNd.NavigateUrl = "titlex" + "?id=" + drv["layerid"].ToString()

}

else if(Ls_type == "text")

{

tmpNd.NavigateUrl = "detail_textx" + "?id=" + drv["layerid"].ToString()

}

else if(Ls_type == "table" &&drv["layer_type"].ToString() == "B")

{

tmpNd.NavigateUrl = "deptelx" + "?id=" + drv["layerid"].ToString()

}

else if(Ls_type == "image")

{

tmpNd.NavigateUrl = "picbrowx" + "?id=" + drv["layerid"].ToString()

}

tmpNd.Target = "main"框架对象

Nds.Add(tmpNd)

intId=drv["prior_layerid"].ToString()

InitTree(tmpNd.Nodes,tmpNd.ID)

}

}

#endregion


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11757714.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存