微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

下面是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)

    
@H_404_489@...
{

        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)

@H_404_650@

    
{

        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 sqlstring 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],(

      SELECT COUNT(
* ) FROM RA_SubjectStore WHERE ParentID = Org.[ID]) AS ChildNodeCount

    FROM RA_SubjectStore AS Org WHERE ParentID 
= @ParentID


GO

 

 

下面的比较清楚

 

 

private void BuildTree(int ParentID,TreeView TreeNM)
         {
             DataView dv = new DataView(DT);

             dv.RowFilter = "[PID]=" + ParentID;
             foreach (DaTarowView Row in dv)
             {
                 String NodeName = Row[2].ToString();
                 String NodeId = Row[0].ToString();
                 String NodeUrl = Row[3].ToString();
                 String NodeExpend = Row[4].ToString();
                 TreeNode Node = CreateNode(NodeName,NodeId,NodeUrl,NodeExpend);
                 TreeNM.Nodes.Add(Node);
                 BuildNode(Convert.ToInt32(NodeId),Node);
             }
         }

         private void BuildNode(int ParentID,TreeNode pNode)//递归绑定结点
         {
             DataView dv = new DataView(DT);
             dv.RowFilter = "[PID]=" + ParentID;
             foreach (DaTarowView Row in dv)
             {
                 String NodeName = Row[2].ToString();
                 String NodeId = Row[0].ToString();
                 String NodeUrl = Row[3].ToString();
                 String NodeExpend = Row[4].ToString();
                 TreeNode Node = CreateNode(NodeName,NodeExpend);
                 pNode.ChildNodes.Add(Node);
                 BuildNode(Convert.ToInt32(NodeId),Node);
             }
         }

         private TreeNode CreateNode(string nodeText,string nodeID,string link,string isExpanded)         {             TreeNode Node = new TreeNode();             Node.Text = nodeText;            // Node = nodeID;             Node.Target = "main";             if (link != "")             {                 Node.NavigateUrl = link;             }             else             {                 Node.NavigateUrl = string.Empty;             }             if (isExpanded == "1")             {                 Node.Expanded = true;             }             else             {                 Node.Expanded = false;             }             Node.SelectAction = TreeNodeselectAction.Expand;//和ASP.NET1.1中TREEVIEW的SelectExpands属性等效                    return Node;         }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐