TreeView存储过程动态绑定树控件

转载 2007年09月28日 09:18:00
这个方法绑定速度远远高于上一种(递归绑定)绑定树控件的方法。

下面是CS中的代码:

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 GetDataProcedureCreateTree : System.Web.UI.Page
...{
    DbHelperSQL Obj 
= new DbHelperSQL();
    
    
protected void Page_Load(object sender, EventArgs e)
    
...{
        
if (!IsPostBack)
        
...{
            DataTable dt 
= new DataTable();
            dt 
= getChindNode("0");      //得到所有父节点,放到DATATABLE中,这里默认根节点的父节点为 0
            BindNode(dt, TreeView1.Nodes);         //绑定所有的父节点

        }

    }


    
/**//// <summary>
    
/// 调用存储过程,得到父节点的子节点,放到DataTable中
    
/// </summary>
    
/// <param name="ParentID"></param>
    
/// <returns></returns>

    private DataTable getChindNode(string ParentID)
    
...{
        DataTable dt 
= new DataTable();
        dt 
= Obj.ExecuteSql1("TreeViewGetData",ParentID);
        
return dt; 
    }


    
/**//// <summary>
    
/// 填充节点事件
    
/// </summary>
    
/// <param name="sender"></param>
    
/// <param name="e"></param>

    protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
    
...{
        getDataNode(e.Node.Value, e.Node);     
//点加号展开时调用.得到数据并绑定.传入点击结点ID,和点击节点对像.
    }



    
private void getDataNode(string ParentID,TreeNode Node)
    
...{
        BindNode(getChindNode(ParentID), Node.ChildNodes);       
//向结点填充数据.
    }


    
/**//// <summary>
    
/// 填充节点
    
/// </summary>
    
/// <param name="dt"></param>
    
/// <param name="Node"></param>

    private void BindNode(DataTable dt ,TreeNodeCollection Node)
    
...{
        DataView dv 
= new DataView(dt);
        TreeNode NewNode;
        
foreach (DataRowView dr in dv)
        
...{
            NewNode 
= new TreeNode();
            NewNode.Text 
= dr["NodeName"].ToString();
            NewNode.Value 
= dr["ID"].ToString();
            Node.Add(NewNode);
            
//是否动态添加结点。
            NewNode.PopulateOnDemand = Convert.ToInt32(dr["ChildNodeCount"].ToString()) > 0;
        }

    }



}

 下面是aspx界面中的源:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GetDataProcedureCreateTree.aspx.cs" Inherits="GetDataProcedureCreateTree" %>

<!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>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
      
<asp:TreeView ID="TreeView1" runat="server" ExpandDepth="0"
            OnTreeNodePopulate
="TreeView1_TreeNodePopulate" Style="position: relative" ImageSet="Simple" CollapseImageUrl="~/image/decrease.bmp" ExpandImageUrl="~/image/add.bmp">
          
<ParentNodeStyle Font-Bold="False" />
          
<HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
          
<SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD" HorizontalPadding="0px"
              VerticalPadding
="0px" />
          
<NodeStyle Font-Names="Tahoma" Font-Size="10pt" ForeColor="Black" HorizontalPadding="5px"
              NodeSpacing
="0px" VerticalPadding="2px" />
        
</asp:TreeView>
    
</div>
    
</form>
</body>
</html>

下面是DbHelperSQL.cs中的代码:

using System;
using System.Data;
using System.Configuration;
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;


/**//// <summary>
/// DbHelperSQL 对数据库的各种操作。
/// </summary>

public class DbHelperSQL             //连接SQLSERVER数据库
...{
    SqlConnection Conn;                    
//定义连接
    public DbHelperSQL()
    
...{
    }

    
/**//// <summary>
    
/// 连字数据库
    
/// </summary>

    public void ConnectDataBase()
    
...{
        
string Connectionstring = ConfigurationSettings.AppSettings["ConnectionString"];
        Conn 
= new SqlConnection(Connectionstring);
        Conn.Open();
    }


    
/**//// <summary>
    
/// 执行存储过程返回DataTable
    
/// </summary>
    
/// <param name="sql"></param>
    
/// <param name="ParentID"></param>
    
/// <returns></returns>

    public DataTable ExecuteSql1(string sql, string ParentID)
    
...{
        DataTable dt;
        
try
        
...{
            ConnectDataBase();
            dt 
= new DataTable();
            SqlDataAdapter da 
= new SqlDataAdapter(sql, Conn);

            SqlParameter parm 
= new SqlParameter("@ParentID", ParentID);
            da.SelectCommand.Parameters.Add(parm);
            da.SelectCommand.CommandType 
= CommandType.StoredProcedure;            
            da.Fill(dt);
            Conn.Close();
            
return dt;
        }

        
catch
        
...{
            Conn.Close();
            
return dt = null;
        }

    }

}

 

存储过程:

CREATE PROCEDURE TreeViewGetData(
@ParentID nvarchar(
40))                    --参数,父节点ID
AS
   IF @ParentID IS NULl               
--如果,父节点ID为空
           
   SELECT [ID],[NodeName] ,(
      SELECT COUNT(
*) FROM RA_SubjectStore WHERE ParentID=Org.[ID]) AS ChildNodeCount
    FROM RA_SubjectStore AS Org WHERE @ParentID  IS NULL
   ELSE
    
--查询出该父节点下第一级子节点
    SELECT [ID],[NodeName] ,(
      SELECT COUNT(
*) FROM RA_SubjectStore WHERE ParentID=Org.[ID]) AS ChildNodeCount
    FROM RA_SubjectStore AS Org WHERE ParentID 
=@ParentID

GO

代码已经没有漏掉的了。希望能给大家一点帮助!

 

TreeView存储过程动态绑定树控件

这个方法绑定速度远远高于上一种(递归绑定)绑定树控件的方法。下面是CS中的代码:using System;using System.Data;using System.Configuration;us...
  • zstzw
  • zstzw
  • 2007年10月08日 10:56
  • 494

TreeView存储过程动态绑定树控件

这是从同事那里得来的代码,当然他也是从网上看来的。呵呵!整理了一下,这个方法绑定速度远远高于上一种(递归绑定)绑定树控件的方法。下面是CS中的代码:using System;using System....
  • zengjun24
  • zengjun24
  • 2007年09月27日 22:36
  • 1916

C#动态绑定treeview控件

前台只需要放一个 treeview控件就行 后台   protected void Page_Load(object sender, EventArgs e)     {         ...
  • liuwen718
  • liuwen718
  • 2014年03月28日 11:59
  • 845

ASP.NET TreeView动态绑定数据库显示

Treeview动态的绑定3层深度的树的代码
  • waterxcfg304
  • waterxcfg304
  • 2013年12月11日 09:51
  • 4276

TreeView(树控件)与数据库绑定

C#在using 加using System.Configuration;using System.Data.SqlClient;using Microsoft.Web.UI.WebControls;...
  • ljsql
  • ljsql
  • 2008年01月10日 17:09
  • 792

.net的TreeView控件绑定数据库表建立树架构

net本身自带的TreeView控件本身可以提供简单快捷的树结构控件,不过需要是在前台界面手动输入静态数据,只能预先设定好值,一一录入。这次使用到的方法是通过在后台代码绑定数据库表,实现动态的数据树显...
  • Annn_kk
  • Annn_kk
  • 2017年04月17日 14:41
  • 371

C#-树视图的实现以及TreeView属性---ShinePans

树视图TreeView 属性及方法 属性 说明 Nodes 获取分配给树视图控件的树节点集合 PathSeparator 获取或设置树节...
  • panshang1994
  • panshang1994
  • 2014年05月04日 21:51
  • 2763

C# TreeView控件动态组树(可控制节点级别)

需求分析: 面对如此“强(wu)大(yu)”的需求,本菜鸟也是想尽办法做封装,来帮助深陷huohai的亲们。。我们的查询界面变成了树+下拉框+复选框,每个界面都有树,我就索性把树封装了,...
  • u012904383
  • u012904383
  • 2016年04月03日 22:48
  • 2147

treeview控件(动态数据绑定+整行选择)(WPF)(一)

在使用treeview控件时,数据大多都是从数据库中读取后动态绑定的,而且为了美观,在选择项的时候多会高亮显示整行...
  • pyx61198
  • pyx61198
  • 2015年05月14日 17:06
  • 2607

VC中树控件的用法

树形控件可以用于树形的结构,其中有一个根接点(Root)然后下面有许多子结点,而每个子结点上有允许有一个或多个或没有子结点。MFC中使用CTreeCtrl类来封装树形控件的各种操作。通过调用BOOL ...
  • liqing19850102
  • liqing19850102
  • 2012年05月29日 22:19
  • 7536
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TreeView存储过程动态绑定树控件
举报原因:
原因补充:

(最多只允许输入30个字)