using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.Hosting;
using System.Security.Permissions;
using System.Text;
using ClientControl;
/// <summary>
///ExtTree 的摘要說明
/// </summary>
public class ExtTree
{
private string _XMLpath;
private static ExtTree extTree = null;
public static ExtTree Current
{
get
{
if (extTree == null)
extTree = new ExtTree();
return extTree;
}
}
DataTable dtTree = new DataTable();
private string logidID = string.Empty;
private string sessionID = string.Empty;
private ExtTree()
{
//InitXMLpath();
//GetAllNodes();
}
private void InitXMLpath()
{
string xmlpath = "~/app_data/tree.xml";
_XMLpath = HostingEnvironment.MapPath(xmlpath);
FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.Write, _XMLpath);
permission.Demand();
}
private DataTable GetAllNodes()
{
//ds.ReadXml(_XMLpath);
dtTree = MainClientControl.Instance().GetTree(this.logidID, this.sessionID);
return dtTree;
}
private DataTable GetAllNodes(string parentid)
{
//DataTable dt = GetAllNodes();
DataTable dt = dtTree;
DataTable _dt = dt.Clone();
//DataRow[] drs = dt.Select("parentid = '" + parentid .ToString()+ "'");
//if (drs.Length > 0)
//{
// foreach (DataRow dr in drs)
// {
// _dt.ImportRow(dr);
// }
//}
foreach (DataRow dr in dt.Rows)
{
if (dr["parentid"].ToString() == parentid.ToString())
_dt.Rows.Add(dr.ItemArray);
}
return _dt;
}
public string CreateExtTreeJSON(string logidID,string sessionID)
{
this.logidID = logidID;
this.sessionID = sessionID;
GetAllNodes();
StringBuilder sb = new StringBuilder();
CreateExtTreeNode(sb);
string s= sb.ToString();
return s.Replace("}{","},{");
}
/*
* Ext Tree JSON 數據部分屬性說明:
* text: 要顯示的節點文件
* id:這個就不用解釋了
* href:鏈接地址
* hrefTarget:鏈接目標框架名稱
* children:子節點 格式:[{節點1},{節點2}...]
* leaf:當前節點是否爲葉子節點。如果爲false 則此節點有子節點。
* 否則爲true,此節點在無子節點
* */
private void CreateExtTreeNode(StringBuilder sb)
{
DataTable dt = GetAllNodes("0");
if (dt.Rows.Count > 0)
{
sb.Append("[");
foreach (DataRow dr in dt.Rows)
{
sb.Append("{");
sb.Append("text:'" + dr["title"].ToString() + "',");
if (this.logidID == "9999")
{
sb.Append("checked:false,");
}
//sb.Append("id:'node" + dr["id"].ToString() + "',");
sb.Append("id:'" + dr["id"].ToString() + "',");
sb.Append("href:'" + dr["url"].ToString() + "',");
sb.Append("hrefTarget:'main'");
AddChildrenNode(GetAllNodes(dr["id"].ToString()),sb);
sb.Append("}");
}
}
sb.Append("]");
}
private void AddChildrenNode(DataTable dt,StringBuilder sb)
{
if (dt.Rows.Count > 0)
{
sb.Append(",leaf:false,children:[");
foreach (DataRow dr in dt.Rows)
{
sb.Append("{");
sb.Append("text:'" + dr["title"].ToString() + "',");
if (this.logidID == "9999")
{
sb.Append("checked:false,");
}
//sb.Append("id:'node" + dr["id"].ToString() + "',");
sb.Append("id:'" + dr["id"].ToString() + "',");
sb.Append("href:'" + dr["url"].ToString() + "',");
sb.Append("hrefTarget:'main'");
AddChildrenNode(GetAllNodes(dr["id"].ToString()), sb);
sb.Append("}");
}
sb.Append("]");
}
else
sb.Append(",leaf:true");
}
}