ASP.NET2.0 TreeView的数据库绑定-程序员宅基地

技术标签: ui  数据库  xhtml  

<% @ 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中,形成一个无限动态树.(当然还有其他的数据库的方法)

private   void  InitTree(TreeNodeCollection Nds,  string  ParentId)
    
... {
        DataView dvroles 
= new DataView();
        TreeNode tmpNd;
        
        
string strRID;
        dvroles.Table 
= csa.CreateDataSet("DS1").Tables["T1"];//DataSet的DataTable表中
        dvroles.RowFilter = " ParentID=" + ParentId;
        
foreach (DataRowView drvrole in dvroles)
        
...{
            strRID 
= drvrole["ID"].ToString();
            tmpNd 
= new TreeNode();
            tmpNd.Value 
= drvrole["ID"].ToString();
            tmpNd.Text 
= drvrole["Name"].ToString();
            tmpNd.Target 
= drvrole["ParenID"].ToString();
            Nds.Add(tmpNd);
            InitRoleTree(tmpNd.ChildNodes, strRID);
        }

    }

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

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

 


转载于:https://www.cnblogs.com/wdx2008/archive/2007/06/22/792509.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dazhang5284/article/details/102029527

智能推荐

瑞芯微ROCK960 RK3399烧录image后扩容rootfs-程序员宅基地

文章浏览阅读831次。问题描述:RK3399开发板烧录官网提供的ubuntu镜像:Ubuntu 16.04 Server arm64(下载地址:https://www.96boards.org/documentation/consumer/rock/downloads/ubuntu.md.html),开发板上电运行查看系统根目录容量已使用96%:root@rock960:~# dfFilesy..._瑞星微 扩展空间 roots

Github Desktop 2:_githubdesktop下载-程序员宅基地

文章浏览阅读116次。Github不用多说,直接进入正题吧。有很多不想使用命令行的可以使用Github Desktop1.上传代码到github(创建仓库) 点击左上角的加号选择Add选项然后选择你要上传的项目之后点击蓝色的button。 然后点击Publish。这样项目就上传到github上啦。 选择刚才上传的项目就可以到github上面查看了。 ..._githubdesktop下载

STM32+W5500+以太网应用开发+002_TCP 服务器和客户端_w5500 hal库 tcp例子-程序员宅基地

文章浏览阅读99次。基于STM32CubeMX创建工程,移植W5500最新驱动库ioLibrary_Driver-4.0.0。创建TCP服务器应用和TCP客户端应用。_w5500 hal库 tcp例子

Altium Designer17PCB设计DRC报错之Short-Circuit Constraint Violation的解决-程序员宅基地

文章浏览阅读1.2w次,点赞4次,收藏3次。1错误如下:[Short-Circuit Constraint Violation] SF6LEAK.PcbDoc Advanced PCB Short-Circuit Constraint: Between Track (3849.237mil,4600.763mil)(3992.307mil,4600.763mil) on Top Layer And Pad U6-1(3992.307mil,4600.763mil) on Top Layer Location : [X = 4127.693mil][_short-circuit constraint violation

Centos7安装DPDK环境搭建&&错误解决_dpdk-16.11.2 编译安装报错-程序员宅基地

文章浏览阅读717次。依赖安装$ yum install -y libpcap-devel pcre-devel file-devel libyaml-devel jansson-devel libcap-ng-devel librdkafka-devel nss-devel nspr-devel make gcc$ yum install -y libxml2-devel$ yum install -y py..._dpdk-16.11.2 编译安装报错

大数据学习-python通过Pyhive连接hive数据库_python pyhive 连接hive-程序员宅基地

文章浏览阅读1.4k次。1.hbase和hive结合(1)hbase建表添加数据#test是表名,name是列族#hbase可以一个列族里边多个字段create 'test','name'#添加数据put 'test','1','name:t1','1'put 'test','1','name:t2','2'#查询scan 'test'#查询 get 表名,row-key,列族get 'test','1','name:t1'#删除表disable 'test'drop 'test'#_python pyhive 连接hive

随便推点

你不知道的vue——Cascader级联选择器点击标签选中复选框_vue a-cascader checkoutbox-程序员宅基地

文章浏览阅读1.4k次,点赞2次,收藏4次。Cascader级联选择器点击标签选中复选框element-ui原功能实现效果代码element-ui原功能element-ui的Cascader级联选择器点击标签时是不会选中复选框的,我们想要实现点击标签时也能选中复选框这个效果,那么就要用到一些原生的方法实现效果代码 mounted() { // Cascader 级联选择器: 点击文本就让它自动点击前面的input就可以触发选择。 setInterval(function() { document.query_vue a-cascader checkoutbox

[MFC]CDialog类简介、创建模态对话框_cdialog模态-程序员宅基地

文章浏览阅读4.6k次。1. CDialog类的基本使用方法: 1) 在创建自己的对话框之前必须先从CDialog类派生出自己的类,并在派生类中定义一些自己的数据域以及其它新的函数; 2) CDialog中继承来的最重要的三个函数都是消息响应函数:OnInitDialog、OnOK、OnCancel函数 i. OnInitDialog相应的WM_INITDIALOG消息,该函_cdialog模态

VS 2019 编译程序在其它电脑运行报丢失VCRUNTIME140D.dll 【终极解决方案】_mfc 生成的库放在无编译环境的电脑报vcruntime160-程序员宅基地

文章浏览阅读1.3w次,点赞14次,收藏62次。Visual Studio 2019 新建控制台项目,直接编译通过,放到其它电脑上(没有安装VS环境),无法运行,报如下错误:丢失VCRUNTIME140D.dll解决方案:在VS工程项目中,设置属性—>配置属性—>C/C++ —>代码生成—>运行库,Release 选择 多线程(/MT), Debug 选择 多线程调试 (/MTd),如图所示编译Release 版本,此时如果工程没有依赖其它静态库,一般都能在其它电脑运行。但是,如果工程中依赖了其它静态._mfc 生成的库放在无编译环境的电脑报vcruntime160

llama.cpp部署_llama.cpp server-程序员宅基地

文章浏览阅读1.1k次,点赞7次,收藏22次。训练完成之后,模型的参数就固定了,这时候就可以使用模型进行推理,对外提供服务。llama.cpp 主要解决的是推理过程中的性能问题。计算类 Python 库的优化手段之一就是使用 C 重新实现,这部分的性能提升非常明显。另外一个是量化,量化是通过牺牲模型参数的精度,来换取模型的推理速度。llama.cpp 提供了大模型量化的工具,可以将模型参数从 32 位浮点数转换为 16 位浮点数,甚至是 8、4 位整数。除此之外,llama.cpp 还提供了服务化组件,可以直接对外提供模型的 API。_llama.cpp server

android 图片处理器-包括反转、浮雕、锐化、轮廓提取功能_安卓 java简单的图片处理器-程序员宅基地

文章浏览阅读2.4k次,点赞3次,收藏4次。软件功能主界面选择图片点击主界面右下角的浮动按钮,即可选择图片显示在主界面上。撤销点击主界面左下角的浮动按钮即可进行撤销操作。保存图片点击菜单栏的保存按钮即可进行保存图片操作。 反转参考博客:http://blog.51cto.com/mahaile/594807水平反转点击菜单栏的水平反转按钮即可进行水平反转操作。垂_安卓 java简单的图片处理器

记录一次IDEA2020.3中Maven导入依赖失败的问题_idea2023引入maven失效-程序员宅基地

文章浏览阅读439次。IDEA2020.3中Maven导入依赖失败的问题  pom.xml已导入坐标,maven本地仓库也下载了相对应的jar包,但是在项目的libraries中却报红了,找不到对应的jar包。_idea2023引入maven失效