TreeView树形控件递归绑定数据库里的数据
TreeView树形控件递归绑定数据库里的数据。
第一种:性能不好
第一步:数据库中查出来的表,字段名分别为UNAME(显示名称),DID(关联数据),UTYPE(类型)

第二步:前台代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="tree.aspx.cs" Inherits="Maticsoft.Web.tree" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function show(msg) {
alert(msg);
}
</script> </head>
<body> <form id="form1" runat="server">
<div>
<asp:TreeView ID="treeT" runat="server">
</asp:TreeView> </div>
</form>
</body>
</html>
第三步:后台代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient; namespace Maticsoft.Web
{
public partial class tree : System.Web.UI.Page
{
Maticsoft.BLL.G_USERS bll = new BLL.G_USERS();
Maticsoft.Model.G_USERS model = new Model.G_USERS(); protected void Page_Load(object sender, EventArgs e)
{
//根节点的条件
BindTree("");
} #region 绑定父节点(第一级)
private void BindTree(string pid)
{ DataSet ds = bll.GetList("a.status > -1 and utype=" + pid);
if (ds.Tables[].Rows.Count > )
{
for (int i = ; i < ds.Tables[].Rows.Count; i++)
{
TreeNode node = new TreeNode();
node.Text = ds.Tables[].Rows[i]["uName"].ToString();
node.Target = ds.Tables[].Rows[i]["dID"].ToString();
this.treeT.Nodes.Add(node);
BindNode(node);
}
}
}
#endregion #region 绑定子节点 #endregion
private void BindNode(TreeNode nd)
{
DataSet ds = bll.GetList("a.status>-1 and a.id=b.user_id and b.fid=" + Convert.ToString(nd.Target) + " order by b.shorder asc ");
for (int i = ; i < ds.Tables[].Rows.Count; i++)
{
TreeNode node = new TreeNode();
node.Text = ds.Tables[].Rows[i]["uName"].ToString();
node.Target = ds.Tables[].Rows[i]["dID"].ToString();
nd.ChildNodes.Add(node); //判断是否到最底层节点
if (ds.Tables[].Rows[i]["utype"].ToString() != "")
{
BindNode(node);
}
}
} }
}
效果功能图:

另一种一步到位:(一次把所有数据放在数据集中,后面再查询)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
namespace tree
{
public partial class tree : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DataSet ds = GetData();
DataRow[] dr = ds.Tables[].Select("utype=8");
TreeNode node = new TreeNode();
node.Text = dr[]["UName"].ToString();
node.Value = dr[]["ID"].ToString();
this.TreeView1.Nodes.Add(node);
BindTree(node, dr[]["DID"].ToString(), ds);
}
} private void BindTree(TreeNode Nodes, string pid, DataSet ds)
{
DataRow[] dr = ds.Tables[].Select("fid=" + pid, "shorder asc");
if (dr.Length > )
{
for (int i = ; i < dr.Length; i++)
{
TreeNode node = new TreeNode();
node.Text = dr[i]["UName"].ToString();
node.Value = dr[i]["ID"].ToString();
Nodes.ChildNodes.Add(node);
if(dr[i]["utype"].ToString() !="")
BindTree(node, dr[i]["DID"].ToString(), ds);
}
}
} private DataSet GetData()
{
OleDbConnection conn = new OleDbConnection(System.Configuration.ConfigurationManager.AppSettings["OleDbConnString"]);
conn.Open();
string osqlstr ="select a.id,a.uname,a.utype,b.id did,b.fid,b.shorder from g_users A,G_DEPT B where a.status>-1 and a.id=b.user_id "; OleDbDataAdapter oda = new OleDbDataAdapter(osqlstr, conn); DataSet ods = new DataSet();
oda.Fill(ods); return ods;
}
}
}
TreeView树形控件递归绑定数据库里的数据的更多相关文章
- SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题
转:http://blog.csdn.net/miragesky2049/article/details/7204882 SharePoint2010沙盒解决方案基础开发--关于TreeView树形控 ...
- 基于Bootstrap的JQuery TreeView树形控件,数据支持json字符串、list集合(MVC5)<二>
上篇博客给大家介绍了基于Bootstrap的JQuery TreeView树形控件,数据支持json字符串.list集合(MVC5)<一>, 其中的两种方式都显得有些冗余.接着上篇博客继续 ...
- Web应用程序开发,基于Ajax技术的JavaScript树形控件
感谢http://www.cnblogs.com/dgrew/p/3181769.html#undefined 在Web应用程序开发领域,基于Ajax技术的JavaScript树形控件已经被广泛使用, ...
- js树形控件—zTree使用总结
0 zTree简介 树形控件的使用是应用开发过程中必不可少的.zTree 是一个依靠 jQuery 实现的多功能 “树插件”.优异的性能.灵活的配置.多种功能的组合是 zTree 最大优点. 0.0 ...
- 关于 DevExpress.XtraTreeList.TreeList 树形控件 的操作
作为一个C#程序员,在写程序时一直以来都使用的微软那一套控件,用起来特别爽,可是最近公司的一个项目用到了DevExpress框架,不用不知道,一用吓一跳,不得不承认这个框架确实很强大,效果也很炫,但是 ...
- jQuery树形控件zTree使用小结
作者:Fonour 字体:[增加 减小] 类型:转载 时间:2016-08-02我要评论 这篇文章主要为大家详细介绍了jQuery树形控件zTree使用方法,zTree树插件的基本使用方法,感兴趣的小 ...
- jQuery树形控件zTree使用
http://www.cnblogs.com/AutumnRhyme/p/5915769.html .................................................. ...
- Qt树形控件QTreeView使用1——节点的添加删除操作 复选框的设置
QtreeView是ui中最常用的控件,Qt中QTreeWidget比QTreeView更简单,但没有QTreeView那么灵活(QTreeWidget封装的和MFC的CTreeCtrl很类似,没有m ...
- Java基础-SSM之mybatis的树形控件(自关联)
Java基础-SSM之mybatis的树形控件(自关联) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备测试环境(创建数据库表) 1>.创建areas表: use y ...
随机推荐
- JAVA设计模式之解释器模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述解释器(Interpreter)模式的: 解释器模式是类的行为模式.给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个 ...
- HTML音乐播放——切歌
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- tinyxml学习一
在TinyXML中,根据XML的各种元素来定义了一些类: TiXmlBase:整个TinyXML模型的基类. TiXmlAttribute:对应于XML中的元素的属性. ...
- 前端项目构建error
Refusing to install webpack as a dependency of itself 原因:package.json中,"name": "webpa ...
- NK3C开发要点
1.业务逻辑:文档, 2.后端资料 框架:spring + mybatis + maven + Shiro + 数据库(Oracle.SQL Server.MySQL) 分层:nmodel,ndal, ...
- NHibernate系列文章九:NHibernate对象二级缓存上
摘要 NHibernate的二级缓存由SessionFactory管理,由所有Session共享. NHibernate缓存读取顺序: 首先从一级缓存中读取,如果一级缓存对象存在,则读取一级缓存对象并 ...
- 借助 MySQLTuner 优化 MySQL 性能(转载的一篇文章)
MySQLTuner 是一个 Perl 脚本,可以用来分析您的 MySQL 性能,并且基于收集到的信息给出相应的优化建议.这样子,您就可以调整 my.cnf 从而优化您的 MySQL 设置. 这边只是 ...
- 给pcm格式文件加wav文件头
#include <stdlib.h>#include <stdio.h>#include <string.h>void main(){ //wav头的结构如下所示 ...
- _Dispose(typeinfo,pointer ); 不知道说的是什么? 感觉会有用, 留待以后研究
[传说]晓不得2013(26562729) 16:45:41别人把文章发出来,说明就是验证过的.[潜水]ひㄨㄨ那个ㄨㄨ(1548253108) 16:46:23[潜水]ひㄨㄨ那个ㄨㄨ(15 ...
- 循序渐进Python3(七) --1-- 面向对象
Python 面向对象 什么是面向对象编程? 面向对象编程是一种程序设计范式 对现实世界建立对象模型 把程序看作不同对象的相互调用 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Py ...