b/s和C/S方法用C#递归方法把数据表加载到treeview控件中

先看一下数据库的结构:

表结构如下所示:

Num                   Name                                 fatherNum       BZ

01                      总节点                                      0              ......

0101                   第一个一级节点                          01             ......

010101               第一个一级节点的第一个支节点       0101         ......

010102               第一个一级节点的第二个支节点       0101         ......

010103               第一个一级节点的第三个支节点       0101         ......

0102                   第二个一级节点                          01             ......

010201               第二个一级节点的第一个支节点       0102         ......

0103                   第三个一级节点                          01             ......

010301               第三个一级节点的第一个支节点       0103         ......

01030101           第三个一级节点的第一个支节点       010301      ......

C/S代码如下:

C/S代码 

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> 1         public void AddTree(string fatherNum, TreeNode pNode)
        {

             DataView dvTree = new DataView(ds.Tables[0]);

             dvTree.RowFilter = "[father Num] = " + fatherNum;
             foreach (DataRowView Row in dvTree)
             {
                 TreeNode Node = new TreeNode();
                 if (pNode == null)
                 {         //添加根节点
                     Node.Text = Row["Name"].ToString();

                     treeView1.Nodes.Add(Node);
                     AddTree(Row["Num"].ToString(), Node);         //再次递归
                 }
                 else
                 {       //添加当前节点的子节点
                    Node.Text = Row["Name"].ToString();
                     pNode.Nodes.Add(Node);

                     AddTree(Row["Num"].ToString(), Node);           //再次递归
                 }
             }
        }

         DataSet ds = new DataSet();
         private void Form2_Load(object sender, EventArgs e)
        {
             SqlConnection conn = new SqlConnection("server=.;database=test;uid=sa;pwd=;");
             SqlDataAdapter da = new SqlDataAdapter("select * from test",conn);
             da.Fill(ds);
             TreeNode pNode=null;
             AddTree("0", pNode);
        }

下面是B/S结构的代码:

B/S代码 

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> 1     DataSet ds = new DataSet();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            SqlConnection conn = new SqlConnection("server=.;database=test;uid=sa;pwd=;");
            SqlDataAdapter da = new SqlDataAdapter("select * from test", conn);
            da.Fill(ds);

            TreeNode pNode = null;
            AddTree("0", pNode);
        }

    }
    public void AddTree(string fatherNum, TreeNode pNode)
    {
        DataRow[] dr = ds.Tables[0].Select("fatherNum=" + fatherNum);
        if (dr.Length > 0)
        {
            foreach (DataRow d in dr)
            {
                TreeNode tNode = new TreeNode();
                tNode.Text = d["Name"].ToString();
                if (pNode == null)
                {
                          //添加根节点
                    TreeView1.Nodes.Add(tNode);
                }
                else
                {
                        //添加当前节点的子节点
                    pNode.ChildNodes.Add(tNode);
                    tNode.Collapse();
                }
                AddTree(d["Num"].ToString(), tNode);       //递归
            }
        }
    }

来自:http://www.cnblogs.com/ceoliujia/archive/2010/05/17/1737411.html

b/s和C/S方法用C#递归方法把数据表加载到treeview控件中

时间: 2024-08-06 03:38:47

b/s和C/S方法用C#递归方法把数据表加载到treeview控件中的相关文章

Win32中TreeView控件的使用方法,类似于资源管理器中文件树形显示方式

首先是头文件,内容如下: #include <tchar.h> #include "..\CommonFiles\CmnHdr.h" #include <Windows.h> #include <WindowsX.h> #include <CommCtrl.h> #include "resource.h" #pragma comment (lib,"comctl32.lib") BOOL InitT

使用CefSharp 在C#用户控件中嵌入Chrome浏览器使用方法

CEF(Chromium Embedded Framework, 嵌入式Chromium框架)是C/C++开发的库 目前 Google Chrome(Google浏览器),Chromium浏览器,Opera等都是基于CEF为核心,Webkit引擎的浏览器. Xilium.CefGlue是对CEF项目的.net的包装,它是用P/Invoke的方式来调用CEF类库.CEFSharp是用C++/CLI的方式来调用CEF类库的. 原先使用的是Xilium.CefGlue,如果只是单纯在窗口上实现的话是没

web页面动态加载UserControl,并调用用户控件中的方法来初始化控件

1,HTML页 头部注册: <%@ Register Src="~/WorkLog/WorkLogNewV1/UserControl/CeShiBu.ascx" TagPrefix="UserControl" TagName="CeShiBu"%> <%@ Register Src="~/WorkLog/WorkLogNewV1/UserControl/KaiFaBu.ascx" TagPrefix=&quo

SWFObject使用方法和中文教程及IE无法加载播放的问题

SWFObject使用方法和中文教程 SWFObject的使用是非常简单的,只需要包含 swfobject.js这个js文件,然后在DOM中插入一些简单的JS代码,就能嵌入Flash媒体资源了. 下面是一个最简单的范例: 1.文件顶部需加载swfobject.js <script type="text/javascript" src="swfobject.js"></script> <script type="text/jav

Winform状态栏控件中Label靠右显示的方法

设计器: 代码: 在Form_Load事件中添加 : statusStripMain.LayoutStyle= ToolStripLayoutStyle.HorizontalStackWithOverflow; lbl单位.Alignment = ToolStripItemAlignment.Right; lblCompany.Alignment = ToolStripItemAlignment.Right; lbl联系电话.Alignment = ToolStripItemAlignment.

Android - Fragment正确使用方法介绍,setUserVisibleHint方法实现数据懒加载

我们在做应用开发的时候,一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用,而如果每个fragment都需要去加载数据,或从本地加载,或从网络加载,那么在这个activity刚创建的时候就变成需要初始化大量资源.这样的结果,我们当然不会满意.那么,能不能做到当切换到这个fragment的时候,它才去初始化呢? 答案就在Fragment里的setUserVisibleHint这个方法里. import android.support.v4.app.Fr

调试方法,例如查看UI view怎么加载一个field

方法1:/h,  任意一个动作,就会触发debug 方法2: 执行sat T-CODE: 输入transaction: 执行 UI 点击到: 退出: 按照时间查看调用栈,找到加载attribute的方法.查看为什么一些方法没有加载出来. 原文地址:https://www.cnblogs.com/liyafei/p/11811162.html

清空控件中数据所使用的方法

如图清空控件中的信息是在还没有与数据库进行交互之前进行的操作,所以呢,就不需要和数据库进行交互 第一步,我们可以给用户一个友好提示,是否确认清空数据 DialogResult result= MessageBox.Show("您确定要清空所填入的数据?","用户提示",MessageBoxButtons.YesNo,MessageBoxIcon.Information); if (result == DialogResult.Yes) { //用户确认清空后的代码

WinForm------GridControl控件中使用SearchLookUpEdit控件的方法

1.在数据库添加两张表,拥有主外键关系 主键表: 外键表: 2.往工具栏里拖出GridCont控件,并增加相应的列,这里对"省份"进行修改,"FileName"里面的值与数据库的列名对应,下面的"(Name)"可以与FileName相同: FileName:ProvinceID (Name):ProvinceID 3.找到"ColumnEdit"属性,点击添加"SearchLookUpEdit"控件: 4.