动态创建TreeView控件

该博客介绍了如何动态地从数据库中获取商品种类数据,并利用这些数据创建TreeView控件。主要步骤包括:调用函数获取数据,创建根节点,递归生成子节点,最后在Page_Load事件中初始化TreeView控件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法:

 (1)调用函数从数据库中获取商品种类的数据。

 (2)创建TreeView控件的根节点。

 (3)递归调用函数创建TreeView控件的其它子节点。

 (4)调用函数Page_Load(Object sender,EventArgs e)完成TreeView控件的初始化过程。

完整代码如下:

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;



public partial class UsingTreeView : System.Web.UI.Page

{

	protected void Page_Load(object sender,EventArgs e)

	{

		if(!Page.IsPostBack)

		{   ///显示数据

			BindCategoryTreeView(CategoryView,true,"-1");

		}

	}	

	public void BindCategoryTreeView(TreeView treeView,bool isExpanded,string sSelectedData)

	{

		DataTable dataTable = GetCategorys().Tables[0];

		treeView.Nodes.Clear();     ///清空树的所有节点



        DataRow[] rowList = dataTable.Select("ParentID='-1'"); ///获取所有 DataRow 对象的数组。

		if(rowList.Length <= 0) return;

		///创建根节点

		TreeNode rootNode = new TreeNode();

		///设置根节点属性

		rootNode.Text = rowList[0]["Desn"].ToString();

		rootNode.Value = rowList[0]["CategoryID"].ToString(); ///设置根节点的Key值

        rootNode.Expanded = isExpanded; ///使用 Expanded 属性指定或确定节点的展开状态。

		rootNode.Selected = true;

		///添加根节点

		treeView.Nodes.Add(rootNode);

		///创建其他节点

		CreateChildNode(rootNode,dataTable,isExpanded,sSelectedData);// 递归创建其它节点

	}

	private void CreateChildNode(TreeNode parentNode,DataTable dataTable,bool isExpanded,string sSelectedData)

	{

		///选择数据时,添加了排序表达式OrderBy

		DataRow[] rowList = dataTable.Select("ParentID='" + parentNode.Value + "'","OrderBy");

		foreach(DataRow row in rowList)

		{   ///创建新节点

			TreeNode node = new TreeNode();

			///设置节点的属性

			node.Text = row["Desn"].ToString();

			node.Value = row["CategoryID"].ToString();

			node.Expanded = isExpanded;

			if(node.Value == sSelectedData)

			{

				node.Selected = true;

			}



			parentNode.ChildNodes.Add(node);

			///递归调用,创建其他节点

			CreateChildNode(node,dataTable,isExpanded,sSelectedData);

		}

	}

	public DataSet GetCategorys()

	{

		///创建链接

		SqlConnection myConnection = new SqlConnection(

			ConfigurationManager.ConnectionStrings["SQLCONNECTIONSTRING"].ConnectionString);



		///定义SQL语句

		string cmdText = "SELECT * FROM Category";

		///创建Command

		SqlDataAdapter da = new SqlDataAdapter(cmdText,myConnection);



		///定义DataSet

		DataSet ds = new DataSet();

		try

		{

			///打开链接

			myConnection.Open();

			///读取数据

			da.Fill(ds);

		}

		catch(SqlException ex)

		{

			///抛出异常

			throw new Exception(ex.Message,ex);

		}

		finally

		{

			myConnection.Close();

		}

		///返回DataSet

		return ds;

	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值