惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Troy Hunt's Blog
Schneier on Security
Schneier on Security
N
News | PayPal Newsroom
Hacker News: Ask HN
Hacker News: Ask HN
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Google DeepMind News
Google DeepMind News
www.infosecurity-magazine.com
www.infosecurity-magazine.com
N
News and Events Feed by Topic
V
Vulnerabilities – Threatpost
Cyberwarzone
Cyberwarzone
K
Kaspersky official blog
P
Privacy & Cybersecurity Law Blog
P
Privacy International News Feed
WordPress大学
WordPress大学
U
Unit 42
PCI Perspectives
PCI Perspectives
S
Schneier on Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
Visual Studio Blog
Engineering at Meta
Engineering at Meta
The Cloudflare Blog
I
Intezer
宝玉的分享
宝玉的分享
N
News and Events Feed by Topic
Martin Fowler
Martin Fowler
B
Blog
美团技术团队
T
The Blog of Author Tim Ferriss
C
Cisco Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
酷 壳 – CoolShell
酷 壳 – CoolShell
The Last Watchdog
The Last Watchdog
J
Java Code Geeks
博客园_首页
A
About on SuperTechFans
Vercel News
Vercel News
Attack and Defense Labs
Attack and Defense Labs
H
Heimdal Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
小众软件
小众软件
H
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
The Exploit Database - CXSecurity.com
Y
Y Combinator Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Webroot Blog
Webroot Blog
T
Tenable Blog

博客园 - wdx2008

ORM框架 sql语句字符串处理大全 - wdx2008 - 博客园 收集的ASP.NET中常用正则表达式 - wdx2008 - 博客园 web.config详解 教你合理设计数据表,将优化进行到底 为你的mail server增加SPF记录 马云在《赢在中国》对创业者的经典点评 给不同文件夹设置主题并指定其编码 - wdx2008 - 博客园 在线支付类封装 - wdx2008 - 博客园 SET XACT_ABORT各种用法及显示结果 ASP.NET邮件外发 asp.net Request.ServerVariables 各参数说明集合 - wdx2008 sql清除事务日志命令 js不允许单独打开left.aspx或top.apsx - wdx2008 - 博客园 forms验证:怎么验证两种身份? Forms 验证进行角色控制全攻略 收藏的一些ASP.net 2.0资料 关于asp.net 2.0的用户、角色管理总结(转) - wdx2008 - 博客园 開源圖表控件ZedGraph
ASP.NET2.0 TreeView的数据库绑定 - wdx2008 - 博客园
wdx2008 · 2007-06-22 · via 博客园 - wdx2008

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!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>
<style type="text/css">
<!--
body,td,th 
{
    font-family
: 宋体;
    font-size
: 9pt;
}
body 
{
    margin-left
: 0px;
    margin-top
: 0px;
    margin-right
: 0px;
    margin-bottom
: 0px;
}
-->
</style>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
    
<asp:TreeView ID="TreeView1" runat="server" Width="100%" />
  
</div>
    
</form>
</body>
</html>

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 _Default : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    {
        
if (!IsPostBack)
        {
            TreeViewBind();
        }
    }
    主从表绑定
#region 主从表绑定
    
private void TreeViewBind()
    {
        DataSet dst 
= GetTreeViewData();
        
foreach (DataRow masterRow in dst.Tables["sProBigName"].Rows)
        {
            TreeNode masterNode 
= new TreeNode((string)masterRow["sProBigName"]);
            TreeView1.Nodes.Add(masterNode);
            
foreach (DataRow childRow in masterRow.GetChildRows("child"))
            {
                TreeNode childNode 
= new TreeNode((string)childRow["sProSmallSortName"]);
                masterNode.Expanded 
= false;
                masterNode.ChildNodes.Add(childNode);
            }
        }
    }
private DataSet GetTreeViewData()
    {
        SqlConnection Conn 
= new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionSqlServer"].ToString());
        SqlDataAdapter BigSort 
= new SqlDataAdapter("select * from [Yp_ProBigSort]", Conn);
        SqlDataAdapter SmallSort 
= new SqlDataAdapter("select * from [Yp_ProSmallSort]", Conn);
        DataSet ds 
= new DataSet();
        BigSort.Fill(ds, 
"sProBigName");
        SmallSort.Fill(ds, 
"sProSmallSortName");
        ds.Relations.Add(
"child", ds.Tables["sProBigName"].Columns["iProBigSort_ID"], ds.Tables["sProSmallSortName"].Columns["iProBigSortID"]);
        
return ds;       
    }
    
#endregion
}


Yp_ProBigSort表
数据结构:
iProBigSort_ID(父表主键)
sProBigName(根节点名称)

iProBigSort_ID      sProBigName

1                             普通内科
2                             普通外科
3                             妇产科

Yp_ProSmallSort表
iProSmallSort_ID(子表主键)
iProBigSortID(父表主键)
sProSmallSortName(子节点名称)

iProSmallSort_ID       iProBigSortID       sProSmallSortName

1                                       1                                感冒
2                                       1                                发烧
3                                       2                                普通外科1
4                                       2                                普通外科2
5                                       3                                妇产科1
6                                       3                                妇产科2

-----------------------------------------------

TreeView的数据绑定资源默认的有两类:XML和SiteMap 

这两类资源的共同特点就是资源文件是固定保存在项目中的,这一类方便我们使用来做菜单,所以TreeView归类在导航控件中.这里的绑定我不做详细的叙述,VS2005中可以很方便的使用.

TreeView还有一种用法是用来显示数据信息及其数据信息的层级信息,这里上面的两类就不能满足我们的需要,我们需要的是与数据库资源连接,而形成动态的TreeView.同样我们还可以在数据库中使用树的双亲表示法把树描述出来,例如

ID Name ParentID
1 1 0
2 2 0
3 3 0
4 4 1
5 5 1
6 6 2
7 7 2
8 8 3
9 9 7

使用这种的数据库方法可以很方便的绑定到TreeView中,形成一个无限动态树.(当然还有其他的数据库的方法)

在这里我们可以进行控制的树的信息有

Value 节点的ID
Text 节点的显示信息
Target 关联网页内容的目标窗口,如果没有关联网页,也可以做一个数据容器
ToolTip 节点文本提示工具
ImageUrl 节点图片
ImageToolTip 节点图片文本提示工具