怎样实现TreeView一个结点展开,其他结点合拢??

uestc5wjg 2007-01-16 10:08:30
using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Web.UI.WebControls;
using SQLHelper;

namespace WebASPNET1.Components
{
/// <summary>
/// Tree 的摘要说明。
/// </summary>
public class Tree
{
public static string ApplicationPath = "localhost";

public void BindTree(TreeView treeView)
{
Tree tree = new Tree();
DataTable dataTable = tree.GetTrees(MisSystem.PROJECTNAME.ToLower());

treeView.Nodes.Clear(); // 清空树

TreeNode rootnode = new TreeNode();
rootnode.Text = "商品分类"; // 给节点绑定显示值

///作者注:此值请勿随便修改!!!
rootnode.NodeData = MisSystem.PROJECTTREEROOTNODEDATE; // 给节点绑定key值

rootnode.Expanded = false; // 默认根结点为展开
rootnode.NavigateUrl = "MainDesktop.aspx";//此处应做修改
rootnode.Target = "MainFrame";
rootnode.ImageUrl = "images/05.gif";
treeView.Nodes.Add(rootnode);

CreateChildNode(rootnode,dataTable); // 加入所有根结点以下的结点 
}

public void CreateChildNode(TreeNode parentnode,DataTable dataTable)
{
DataRow[] rowList = dataTable.Select("ParentID='" + parentnode.NodeData + "'");
foreach(DataRow row in rowList)
{
TreeNode tempnode = new TreeNode();
tempnode.Text = row["Title"].ToString();
tempnode.NodeData = row["TreeID"].ToString();
tempnode.Expanded = false;

object obj = tempnode.Nodes;
string ind = (string)obj;
int i = ind.IndexOf(".");
if(i!=-1)
{
ind=ind.Substring(0,i);
foreach(TreeNode tempNode in tempnode.Nodes)
{
if(tempNode.GetNodeIndex()!=ind)
tempNode.Expanded=false;
}
}
//tempnode.NavigateUrl = row["Url"].ToString();
tempnode.NavigateUrl = FormatAdminUrl(row["Url"].ToString());
tempnode.Target = "MainFrame";
parentnode.Nodes.Add(tempnode);
CreateChildNode(tempnode,dataTable);
}
}



public DataTable GetTrees(string sProName)
{
///定义类SQLHelper
SQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper();

///定义保存从数据库获取的结果的DataReader
SqlDataReader dr = null;

///创建访问数据库的参数
SqlParameter[] paramList = {
sqlHelper.CreateInParam("@ProName",SqlDbType.VarChar,200,sProName)
};

try
{
///执行存储过程
sqlHelper.RunProc("Pr_GetTrees",paramList,out dr);
}
catch(Exception ex)
{
///抛出执行数据库异常
SystemError.SystemLog(ex.Message);
throw new Exception(ex.Message,ex);
}

///获取DataTable对象
DataTable dt = SystemTools.ConvertDataReaderToDataTable(dr);

///返回从数据库获取的结果
return(dt);
}

private string FormatAdminUrl(string adminUrl)
{
if(adminUrl.IndexOf("Admins") > -1)
{
return("Http://" + ApplicationPath + "/" + MisSystem.PROJECTNAME
+ "/" + adminUrl);
}
else
{
return(adminUrl);
}
}
}
}
...全文
135 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
TheRule 2007-01-16
  • 打赏
  • 举报
回复
先用CollapseAll折叠所有节点,然后用某一个节点的Expand方法来展开节点,如treeView1.Nodes[1].Expand();

110,534

社区成员

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

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

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