public partial class _Default : System.Web.UI.Page
{
DataSet ds;
protected void Page_Load(object sender, EventArgs e)
{
Sys mg = new Sys();
ds = mg.createdataset("select * from aaa");
if (!IsPostBack)
{
//ds = mg.createdataset("select * from aaa");//调用生成DATASET
//TreeNode node=new TreeNode();
//node.Text = "总商品";
//TreeView1.Nodes.Add(node);
Treechild(TreeView1.Nodes, "sysparentnode=''");//从0开始
}
}
protected void Treechild(TreeNodeCollection Nds, string sqlwhere)//递归
{
DataView dv = new DataView();
TreeNode chnode = new TreeNode();
dv.Table = ds.Tables["Tree"];
dv.RowFilter = sqlwhere;
foreach (DataRowView drv in dv)
{
chnode = new TreeNode();
chnode.Value = drv["zcpdm"].ToString().Trim() + "/" + drv["sysLevel"].ToString().Trim();//从编号; value 给予三个赋值 zcpdm,sysparentnode,sysLevel
chnode.ToolTip = drv["zcpmc"].ToString();//主编号;
chnode.Text = drv["zcpmc"].ToString();
if (Convert.ToBoolean(drv["sysParentSgn"]))
{ chnode.Value = drv["zcpdm"].ToString().Trim() + "/" + drv["sysLevel"].ToString().Trim() + "/child"; }
// tmpNode.ImageUrl
// tmpNode.NavigateUrl
Nds.Add(chnode);
if (Convert.ToBoolean(drv["sysParentSgn"]))//如果 其子节点 是有的 则生成 个空节点
{
TreeNode des = new TreeNode();
des.Text = " ";
chnode.ChildNodes.Add(des);
chnode.Expanded = false;
//Nds = chnode.ChildNodes;
//Nds.Add(des);
//Nds.AddAt(Convert.ToInt32(drv["zcpdm"]), des);
//chnode.ChildNodes.Add(des);
}
//this.Treechild(chnode.ChildNodes, Convert.ToInt32(chnode.Value));//递归
}
}
protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
{
if (e.Node.Value.Contains("child"))//使用 Contains()函数 如果包括子结点 就不重建
{
e.Node.ChildNodes.Clear();
string p_nodevalue = e.Node.Value.ToString();
string sqlsyslevel = p_nodevalue.Substring(p_nodevalue.IndexOf("/") + 1, p_nodevalue.LastIndexOf("/") - p_nodevalue.IndexOf("/") - 1);//Substring (指定 从·· 到·) IndexOf()-LastIndexOf() 确定位置 "A/1/child";
string sqlsysparentnode = p_nodevalue.Substring(0, p_nodevalue.IndexOf("/"));
e.Node.Value = e.Node.Value.Replace("/child", "").Trim();//Replace()函数替换掉原来的,点击时候就不用重建
Treechild(e.Node.ChildNodes, "sysparentnode like '" + sqlsysparentnode + "%' and sysLevel=" + Convert.ToString(Convert.ToInt32(sqlsyslevel) + 1));
//sysparentnode like 'A%' and sysLevel=2
}
//if (e.Node.ChildNodes == null)
//{ Label1.Text = "f"; }
//else
// Label1.Text = "m";
//for (int i = 0; i < TreeView1.Nodes.Count; i++)
//{
// if (TreeView1.Nodes[i] != e.Node)
// {
// TreeView1.Nodes[i].Collapse();
// }
//}
}