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 ...
随机推荐
- [ActionScript 3.0] 喷泉效果
pall为水珠影片剪辑 var count:int = 500; var zl:Number = 0.5; var balls:Array; balls = new Array(); for (var ...
- nginx/Windows-1.9.3启动脚本
启动nginx.bat @echo off D: cd D:\Program Files\nginx-1.9.3 tasklist | findstr /i "nginx.exe" ...
- 47. Largest Rectangle in Histogram && Maximal Rectangle
Largest Rectangle in Histogram Given n non-negative integers representing the histogram's bar height ...
- javascript URI的编码
用encodeURIComponent,但是不清楚她和encodeURI的区别, w3school 对其的解释: encodeURIComponent() 函数可把字符串作为 URI 组件进行编码.( ...
- activeamq启动失败
启动activeamq,启动时控制台显示: INFO: Using java '/usr/bin/java'INFO: Starting - inspect logfiles specified in ...
- Squid服务日志分析
Squid服务日志分析 Apache 和 Squid 是两种著名的代理缓存软件,但Squid 较 Apache 而言是专门的代理缓存服务器软件,其代理缓存的功能强大,支持 HTTP/1.1 协议,其缓 ...
- SQLite数据库文件格式
数据库命名约定 sqlite3_open()API用到数据库的文件名,可以是相对当前工作目录的相对路径名,也可以是从系统根文件树开始的完整路径名.任何被本地文件系统接受的正规文件名都是好的. 如果文件 ...
- Linux下/boot目录
/boot目录存放的是开机所需的文件----内核,开机菜单,及所需配置文件等: (1)系统Kernel的配置文件: (2)启动管理程序GRUB的目录,里面放的都是GRUB在启动时所需要的画面.配置及各 ...
- ffmpeg去logo<转>
用到 video filter —— delogo 通过周围像素插值去除 logo. 参数介绍: x y (必须)指定 logo 的坐标. w h (必须)指定 logo 的宽和高. band, t ...
- make file
CPPUTEST_USE_EXTENSIONS = Y如果没有这一句定义,CppUTestExt/MockSupport.h和CppUTestExt/MockSupport_c.h文件中的定义就不能用 ...