数据库字段
ID
ParentID
EquipmentName
代码:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
递归绑定
1
protected void MachineBind(Int32 KindID)
2![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
3
TreeView1.Nodes.Clear();
4
TreeNode newnode = new TreeNode();
5
T_Machine dao = new T_Machine();
6![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
DataTable dt = dao.GetMachineByKindID(KindID);
8
this.InitTree(this.TreeView1.Nodes, 0, dt);
9
}
10![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//// <summary>
12
/// 初始化树
13
/// </summary>
14
private void InitTree(TreeNodeCollection Nds, int parentID, DataTable dt)
15![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
16
TreeNode tmpNd;
17
DataRow[] rows = dt.Select("MachineParentID=" + parentID);
18
try
19![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
20
//使用foreach语句 来判断递归结束的条件
21
foreach (DataRow row in rows)
22![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
23
tmpNd = new TreeNode();
24
tmpNd.Value = row["MachineID"].ToString();
25
tmpNd.Text = row["MachineName"].ToString();
26
tmpNd.ToolTip = row["MachineFlag"].ToString();
27![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
Nds.Add(tmpNd);
29![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
InitTree(tmpNd.ChildNodes, Convert.ToInt32(tmpNd.Value), dt);
31
}
32
}
33![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
catch
{ }
34
}
35![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
36![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
查询
1![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
查询#region 查询
2
protected void ImgBut_Select_Click(object sender, ImageClickEventArgs e)
3![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
4
TreeView1.CollapseAll();
5
GetNode(TreeView1.Nodes);
6
}
7
//递归查询
8
protected void GetNode(TreeNodeCollection tc)
9![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
10
foreach (TreeNode TNode in tc)
11![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
12
if (TNode.Text.IndexOf(txt_Select.Text.Trim())!=-1)
13![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
14
ExpandParent(TNode);
15
TNode.ImageUrl = "~/TreeLineImages/select.gif";
16
}
17
else
18![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
19
TNode.ImageUrl = "";
20
}
21![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
GetNode(TNode.ChildNodes);
23
}
24
}
25
//展开父节点
26
protected void ExpandParent(TreeNode node)
27![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
28
if (node.Parent != null)
29![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
30
node.Parent.Expand();
31
ExpandParent(node.Parent);
32
}
33
}
34
#endregion
< span>
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
删除
1![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//// <summary>
2
/// 删除 (需设置:TreeView1.ShowCheckBoxes = TreeNodeTypes.Leaf;)
3
/// </summary>
4
protected void but_Del_Click(object sender, EventArgs e)
5![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
6
T_Machine dao = new T_Machine();
7
Int32 count = TreeView1.CheckedNodes.Count;
8
for (int i = 0; i < count; i++)
9![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
10
dao.Delete(Convert.ToInt32(TreeView1.CheckedNodes[i].Value));
11
}
12
MachineBind(Convert.ToInt32(Menu1.SelectedItem.Value));
13
}
14![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
得到所有子节点
1
protected void DisplayChildNodesValue(TreeNodeCollection nodes)
2![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
3
foreach (TreeNode TNode in nodes)
4![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
5
Response.Write(TNode.Value.ToString() + "<br>");
6
DisplayChildNodesValue(TNode.ChildNodes);
7
}
8
}
9
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
10![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
11
DisplayChildNodesValue(TreeView1.SelectedNode.ChildNodes);
12
}
protected void treeNavi_SelectedNodeChanged(object sender, EventArgs e)
{
LblSelect.Text = GetNodePath(treeNavi.SelectedNode, treeNavi.SelectedNode.Text);
}
/// <summary>
/// 获取节点路径
/// </summary>
/// <param name="node"></param>
/// <param name="temp"></param>
/// <returns></returns>
private string GetNodePath(TreeNode node,string temp)
{
if (node.Parent != null)
{
temp = node.Parent.Text +" >> "+ temp;
return GetNodePath(node.Parent, temp);
}
return temp;
}
/// <summary>
/// 选择节点
/// </summary>
/// <param name="tn"></param>
/// <param name="text"></param>
private void SelectNode(TreeNode note, string text)
{
foreach (TreeNode tempNode in note.Nodes)
{
if (tempNode.Text == text)
{
this.treeView1.SelectedNode = tempNode;
}
else
{
if (tempNode.Nodes.Count > 0)
{
SelectNode(tempNode, text);
}
}
}
}
//调用
foreach (TreeNode note in treeView1.Nodes)
{
SelectNode(note, "选择节点的文本");
}