下面是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],(
 ??????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;???????? }
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|