做一个节点类Node,有属性Name,可以包含有子节点chidren,用一个ArrayList存储子节点,可以作节点的添加删除操作。
初学c#,让大家见笑了。麻烦高手指点!
是这样的, 先做一个节点类,然后自定义一个treeview控件,当把RootNode传给treeview,treeview负责把RootNode和他的Children装载进来,同时支持对Node进行添加删除操作时的响应。
class TNode
{
string name;
public string Name
{
get{return name;}
set{name=value;}
}
private ArrayList _Children; // 存储子节点
int AddChild(TNode Node){};
void DelChild(TNode Node){};
}
自己写了个这个,但是方法体应该怎样实现,自己感觉没有头绪,不知去调用哪些类的 方法去实现。
还应该添加那些方法或变量去完成这个类。
private void MyTreeView(DataTable table, string ParentID, Microsoft.Web.UI.WebControls.TreeNode PNode)
{
DataRow[] dr=table.Select("ParentID=" + ParentID);
try
{
if (dr.Length > 0)
{
foreach (DataRow d in dr)
{
Microsoft.Web.UI.WebControls.TreeNode TNode = new Microsoft.Web.UI.WebControls.TreeNode();
TNode.Text = d["powerNAME"].ToString();
if (PNode == null)
{
this.TreeView1.Nodes.Add(TNode);
}
else
{
PNode.Nodes.Add(TNode);
}
TNode.NavigateUrl = "";
TNode.ImageUrl = "img/folderclose.gif";
TNode.ExpandedImageUrl = "img/folderopen.gif";
TNode.NodeData=d["powerid"].ToString();
TNode.Expanded = false;
MyTreeView(table, d["powerID"].ToString(), TNode);
}
}
else
{
return;
}
}
catch (Exception exp)
{
Response.Write(exp.Message);
}
}
[/CODE][CODE]
class MyNode
{
public string name;
private ArrayList al;
public MyNode(string name)
{
this.name = name;
this.al = new ArrayList();
}
public void Add(string name)
{
MyNode mynode = new MyNode(name);
this.al.Add(mynode);
}
public void Remove(int i)
{
this.al.Remove(int i)
}
public void Remove(string name)
{
foreach(int i = 0;i<al.Count;i++)
{
if(this.al[i].name == name)
{
this.al.Remove(i);
}
}
}
}
[/CODE]
仅供参考