//调用
// 加载时显示数据
DataTable dt = CreateTestData();
//从数据库中查询出数据并以此数据创建树
this.CreateTreeNode(this.tevBookClass.Nodes, dt, null);
/// <summary>
/// 创建树
/// </summary>
/// <param name="nodes">控件名</param>
/// <param name="dt">绑定表</param>
/// <param name="curID">null</param>
private void CreateTreeNode(TreeNodeCollection nodes, DataTable dt, string curID)
{
//清空树中所有节点,以免出现重复显示的树节点
nodes.Clear();
// 创建一个空行记录
DataRow[] rows = null;
if (curID == null)
{
//查询出该树最上面一层的节点
rows = dt.Select("[PARENT_CODE] = ''");//"[PARENT_CODE] is null"
}
else
{
//取出以该节点为父节点的所有节点
rows = dt.Select("[PARENT_CODE] = '" + curID + "'");
}
// 循环赋值
foreach (DataRow row in rows)
{
//添加树的节点
TreeNode node = new TreeNode();
node.Value = row["CHILD_CODE"].ToString();
node.Text = row["CHILD_NAME"].ToString();
nodes.Add(node);
//递归调用,创建树
this.CreateTreeNode(node.ChildNodes, dt, node.Value);
}
}
/// <summary>
/// 创建一空数据表,使gridview显示出来
/// </summary>
/// <returns></returns>
private DataTable CreateTestData()
{
FacadeS0101 getMessage = new FacadeS0101();
//创建表的实例
DataTable dt = new DataTable();
DataTable table = new DataTable();
//给该表添加列
table.Columns.Add("CHILD_CODE");
table.Columns.Add("PARENT_CODE");
table.Columns.Add("CHILD_NAME");
//取得数据源
dt = getMessage.SelectMark();
//循环赋值
for (int i = 0; i < dt.Rows.Count; i++)
{
//添加数据到tablerow
table.Rows.Add(new object[] { dt.Rows[i]["CHILD_CODE"].ToString(),
dt.Rows[i]["PARENT_CODE"].ToString(), dt.Rows[i]["CHILD_NAME"].ToString() });
}
table.AcceptChanges();
//返回数据表
return table ;
}
/////html代码
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>营销分类选择</title>
<base target="_self"/>
</head>
<script language ='javascript' type='text/javascript'>
function OnTreeNodeChecked()
{
var ele = event.srcElement;
if(ele.type=='checkbox')
{
var childrenDivID = ele.id.replace('CheckBox','Nodes');
var div = document.getElementById(childrenDivID);
if(div==null)return;
var checkBoxs = div.getElementsByTagName('INPUT');
for(var i=0;i<checkBoxs.length;i++)
{
if(checkBoxs[i].type=='checkbox')
checkBoxs[i].checked=ele.checked;
}
}
}
</script>
<body>
<form id="form1" runat="server">
<div align ="center">
<asp:TreeView ID="tevBookClass" runat="server" ShowCheckBoxes ="All" OnClick="OnTreeNodeChecked()" Width="239px" >
</asp:TreeView>
<br />
<asp:Button ID="btnOk" runat="server" OnClick="btnOk_Click" Text="确 定" Width="60px" />
<asp:Button ID="btnCancel" runat="server" OnClick="btnCancel_Click" Text="取 消" Width="60px" /></div>
</form>
</body>
</html>