我是用的母板页放的treeivew,从数据库读取出来节点名!现在我在父节点下,动态添加一个子节点!比如父节点叫做
“系统桌面”,我想在父节点下添加一个子节点叫做“文件传送”(这里是客户端来添加,所以客户端添加的子节点是无法预知的),此时子节点下的链接地址在客户端怎么确定呢?我知道有一个trNode.NavigateUrl = sTreeUrl;属性
在这里的链接地址如果确定呢?
“系统桌面”,我想在父节点下添加一个子节点叫做“文件传送”(这里是客户端来添加,所以客户端添加的子节点是无法预知的),此时子节点下的链接地址在客户端怎么确定呢?我知道有一个trNode.NavigateUrl = sTreeUrl;属性
在这里的链接地址如果确定呢?
你的数据库就只是存节点信息?
把你的treeview代码贴出来看看吧
/// 给当前节点添加子节点
/// </summary>
/// <param name="node">当前节点</param>
/// <param name="pid">当前节点的ID</param>
protected void AddPages(TreeNode node, string pid)
{
DataSet ds = lm.GetPage(pid);
if (ds != null && ds.Tables.Count > 0)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
TreeNode childnode = new TreeNode();
childnode.Text = dr["BigPageName"].ToString();
childnode.NavigateUrl = "bbsSolution.aspx?PageId=" + dr["PageId"].ToString();
childnode.Target = "mainFrame";
//给当前节点添加子节点
AddPages(childnode, dr["PageId"].ToString());
if (node == null)
{
TreeView1.Nodes.Add(childnode);
}
else
{
node.ChildNodes.Add(childnode);
}
} }
}
private void Bind()
{
tvNode.Nodes.Clear();
IList<Treelist> treelist = bTree.getSystemNodelist();//所有父节点
foreach (Treelist tlist in treelist)
{
string nodeId = tlist.TreeId.ToString();//第一层节点id
string nodeName = tlist.TreeName;//第一层节点名称
TreeNode fatherNode = this.CreatTreeNode(nodeName, nodeId, "", "image/CloseTree.gif");//根据节点信息,创建第一层节点
CreateChildTree(nodeId, fatherNode);//创建子节点
tvNode.Nodes.Add(fatherNode);//将第一层节点加入到TreeView中
}
}
/// <summary>
/// 创建一个树节点,返回一个树节点对象,参数内容是:
/// 节点名称,节点ID,链接地址,正常图标,展开后的图标
/// </summary>
private TreeNode CreatTreeNode(string sTreeName, string sTreeid, string sTreeUrl, string sTreeImg)
{
TreeNode trNode = new TreeNode();
trNode.Text = sTreeName;
trNode.Value = sTreeid;
trNode.NavigateUrl = sTreeUrl;
trNode.ImageUrl = sTreeImg;
return trNode;
}
/// <summary>
/// 创建第二层节点
/// </summary>
/// <param name="nodeId"></param>
/// <param name="fatherNode"></param>
private void CreateChildTree(string nodeId, TreeNode fatherNode)
{
IList<Treelist> childTree = bTree.getTreeParentIdList(int.Parse(nodeId));//得到所有父节点下的子节点
foreach (Treelist trList in childTree)
{
string ChildNodeId = trList.TreeId.ToString();//第二层节点id
string ChildNodeName = trList.TreeName;//第二层节点名称
string NodeUrl = ResolveUrl(trList.TreeUrl.Trim());//将路径转换为在客户端可用的URL
TreeNode childNode = this.CreatTreeNode(ChildNodeName, ChildNodeId, NodeUrl, "image/CloseTree.gif");
fatherNode.ChildNodes.Add(childNode);
}
}现在我只用了两层,所有节点(子节点和父节点)都是放在一个表,表中有一个链接地址字段