[原创]c# 递归 无穷树 easyui json例子无敌
发布时间:2015/1/5 14:26:35 次浏览 作者:admin
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Text;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using NetWing.Common.Data;
using NetWing.Common.Data.SQLServer;
namespace NetWingManager
{
public partial class testtree : System.Web.UI.Page
{
public string nodes = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = SqlEasy.ExecuteDataTable("select * from Co_ItemNameSet ");
GetAllNodes(0,dt);
Response.Write("[" + nodes + "]");//加}是为了闭合
}
/// <summary>
/// 根据DataTable生成Json树结构
/// </summary>
/// <param name="dt">数据源</param>
/// <param name="pid">父ID</param>
public void GetAllNodes(int pid,DataTable dt)
{
DataRow[] drs = dt.Select("parentitemid=" + pid);
if (drs.Length <= 0) return;
int i = 1;
foreach (DataRow dr in drs)
{
//nodes += "总"+drs.Length+"{\"itemname\":"+"\""+dr["itemname"].ToString() +"\""+ "}第"+i;
nodes += "{\"itemid\":\"" + dr["itemid"].ToString() + "\",\"itemname\":" + "\"" + dr["itemname"].ToString() + "\"";
DataRow[] drc = dt.Select("parentitemid=" + dr["itemid"].ToString());
if (drc.Length > 0) //假如大于0 说明有子集
{
nodes += ",\"children\":[";
GetAllNodes(int.Parse(dr["itemid"].ToString()), dt);//递归 就是自己调用自己
nodes += "]";//子集直接在这里封口
}
if (i < drs.Length)//如果datarow没有循环完
{
nodes += "},";//循环没有完不封口
}
else
{
nodes += "}";//循环完了封口
}
i = i + 1;
}
}
}
}