后台生成符合easyui tree用的json语句代码
[{"ID":"1","text":"技术监督子系统","children":[{"ID":"2","text":"环保","children":[{"ID":"5","text":"环保1","children":[{"ID":"7","text":"环保1.1","children":[{"ID":"9","text":"环保1.1.1"}]},{"ID":"10","text":"环保1.2"}]},{"ID":"6","text":"环保2"}]},{"ID":"3","text":"金属"},{"ID":"4","text":"节能"}]},{"ID":"8","text":"测试系统"}]
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
string r=Request.QueryString["pid"];
if(r==null)
r="root";
initTree(r);
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
/// <summary>
/// 初始化树wyw308
/// </summary>
/// <param name="pid"></param>
public void initTree(string pid)
{
DataSet ds = Dal.ExcSql.GetDataSet("select t.id,t.name text,t.parentid from jsjd_type t where t.istop=0");//先查出节点的所有数据
this.ViewState["ds"] = ds;
Context.Response.Write(AddNode(pid,1));
Response.End();
}
/// <summary>
/// 无限递归,生成easyui tree可用的json数据 wyw308
/// </summary>
/// <param name="ParentID">父id</param>
/// <param name="deep">开始深度,默认为1</param>
/// <returns></returns>
private string AddNode(string ParentID,int deep)
{
string str="";
DataSet ds = (DataSet)this.ViewState["ds"];
DataView dvTree = new DataView(ds.Tables[0]);
dvTree.RowFilter = "[parentid] ='" + ParentID + "'";//过滤出ParentId
int i=0;
int d=deep;
foreach (DataRowView drv in dvTree)
{
if(i==0)//如果是某一层的开始,需要“[”开始
{
if(d==1)//如果深度为1,即第一层
str="[";
else//否则,为第二层或更深
str=",\"children\":[";
}
else
str=str+",";
str=str+"{";
str=str+"\"ID\":\""+drv["id"]+"\",";
str=str+"\"text\":\""+drv["text"]+"\"";
str=str+AddNode(drv["id"].ToString(),deep+1);//递归
str=str+"}";
i=i+1;
if(dvTree.Count==i)//如果某一层到了末尾,需要"]"结束
str=str+"]";
}
return str;
}