C#中TreeView与数据库绑定?

C#中TreeView与数据库绑定?,第1张

递归方法。

//

<summary>

///

TreeView数据绑定

///

</summary>

///

<param

name="list"></param>

protected

void

CreateTreeView()

{

TreeNode

rootNode

=

new

TreeNode()

rootNode.Text

=

"全部"

rootNode.Value

=

"-1"

BasicTypeTreeView.Nodes.Add(rootNode)

BasicInformationManager

BasicManager

=

new

BasicInformationManager()

var

tlist

=

BasicManager.GetAllBasicInfoTypes()

foreach

(Model.BasicInforType

mtype

in

tlist)

{

if

(mtype.ParentID

==

0)

{

TreeNode

Node

=

new

TreeNode()

//添加根节点

Node.Text

=

mtype.BasicTypeName

Node.Value

=

mtype.ID.ToString()

Node.ToolTip

=

"编码"

+

mtype.BasicCode

getSubNode(ref

Node,

mtype.ID)

rootNode.ChildNodes.Add(Node)

}

}

}

///

<summary>

///

获取treeView子节点

///

</summary>

///

<param

name="node"></param>

///

<param

name="item"></param>

public

void

getSubNode(ref

TreeNode

node,

int

item)

{

BasicInformationManager

BasicManager

=

new

BasicInformationManager()

var

tlist

=

BasicManager.GetBasicInforTypeByParentId(item)

if

(tlist.Count

>

0)

{

foreach

(Model.BasicInforType

m

in

tlist)

{

TreeNode

subNode

=

new

TreeNode()

subNode.Text

=

m.BasicTypeName

subNode.Value

=

m.ID.ToString()

subNode.ToolTip

=

"编码"

+

m.BasicCode

getSubNode(ref

subNode,

m.ID)

node.ChildNodes.Add(subNode)

//进行子节点循环添加

}

}

}

数据表:

CREATE TABLE CateTable (

[ID] [int] IDENTITY (1, 1) NOT NULL ,

[CateName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,

[RootID] [int] NOT NULL ,

[ParentID] [int] NOT NULL

)

GO

存储过程:

CREATE PROCEDURE CateTable_GetList AS

BEGIN

Select

CateID,

CateName,

RootID,

ParentID

From

CateTable

Order By

CateID,RootID,ParentID

END

代码:

private void MainForm_Load(object sender, EventArgs e)

{

//从数据库中读取数据

SqlConnection con = new SqlConnection(ConnString.ConStr)

SqlCommand cmd = new SqlCommand("CateTable_GetList", con)

cmd.CommandType = CommandType.StoredProcedure

SqlDataAdapter sda = new SqlDataAdapter(cmd)

DataSet ds = new DataSet()

try

{

sda.Fill(ds)

}

catch

{

}

finally

{

cmd = null

con.Close()

}

//往TreeView中添加树节点

//添加根节点

TreeNode tn = new TreeNode()

tn.Text = "种类"

tn.Name = "0"//Name作为ID

tn.Tag = "0"//Tag作为RootID

tn.ImageIndex = 0

tn.SelectedImageIndex = 0

tv.Nodes.Add(tn)//该TreeView命名为tv

tv.SelectedNode = tv.TopNode

//把其他节点加上去

if (ds != null)

{

foreach (DataRow dr in ds.Tables[0].Rows)

{

tn = new TreeNode()

tn.Text = dr["CateName"].ToString()

tn.Name = dr["CateID"].ToString()//Name作为CateID

tn.Tag = dr["RootID"].ToString()//Tag作为RootID

tn.ImageIndex = 1

tn.SelectedImageIndex = 1

//判断是否为主节点

if (dr["CateID"].ToString() == dr["RootID"].ToString())

{

//主节点

tv.SelectedNode = tv.TopNode

}

else

{

//其他节点

if (tv.SelectedNode.Name != dr["ParentID"].ToString())

{

TreeNode[] tn_temp = tv.Nodes.Find(dr["ParentID"].ToString(), true)

if (tn_temp.Length >0)

{

tv.SelectedNode = tn_temp[0]

}

}

}

tv.SelectedNode.Nodes.Add(tn)

}

tv.ExpandAll()//展开TreeView

tv.SelectedNode = tv.TopNode

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9652954.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存