excel 树结构json_具有树结构的表datatable生成树结构的json字符串,前台生成树

具有树结构的表datatable生成树结构的json字符串,前台生成树

1.实现效果

2.代码

public partial class WebForm1 : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

}

[WebMethod]

public static string GetJsonTree()

{

DataTable dtLevels = GetData();

List l = new List { };

string s = TableToEasyUITreeJson(dtLevels, 0, l);

return "{\"nodes\":[" + s + "]}";

}

///

///

///

///

///

///

///

public static string TableToEasyUITreeJson(DataTable dt, int parentID, List parentNodes)

{

try

{

StringBuilder sb = new StringBuilder();

DataTable dt_new = new DataTable();

DataRow[] drs = null;

if (parentID == 0)

{

dt_new = dt.DefaultView.ToTable(true, dt.Columns[parentID].ColumnName);

drs = dt_new.Select();

}

else

{

DataTable dtDdistinctNodes = dt.DefaultView.ToTable(true, dt.Columns[parentID].ColumnName);

string selectString = "";

for (int i = 0; i < parentNodes.Count; i++)

{

selectString += "" + dt.Columns[i].ColumnName + " = '" + parentNodes[i] + "' and ";

}

for (int i = dtDdistinctNodes.Rows.Count - 1; i >= 0; i--)

{

string queryString = selectString + dt.Columns[parentID].ColumnName + " = '" + dtDdistinctNodes.Rows[i][0] + "'";

drs = dt.Select(queryString);

if (drs.Length < 1)

{

dtDdistinctNodes.Rows.Remove(dtDdistinctNodes.Rows[i]);

}

}

drs = dtDdistinctNodes.Select();

}

if (drs.Length < 1)

return "";

foreach (DataRow dr in drs)

{

sb.Append("{");

sb.AppendFormat("text:\"{0}\",", dr[dt.Columns[parentID].ColumnName].ToString());

if (dt.Columns.Count > parentID + 1)

{

if (parentID == 0)

{

parentNodes.Clear();

}

parentNodes.Add(dr[0].ToString());

sb.AppendFormat("nodes:[{0}]", TableToEasyUITreeJson(dt, parentID + 1, parentNodes));

parentNodes.Remove(dr[0].ToString());

}

sb.Append("},");

}

return sb.ToString();

}

catch (Exception ex)

{

throw ex;

}

}

public static DataTable GetData()

{

DataTable dt = new DataTable();

DataColumn dc = new DataColumn();

dc.ColumnName = "a";

dc.DataType = typeof(String);

dt.Columns.Add(dc);

dc = new DataColumn();

dc.ColumnName = "b";

dc.DataType = typeof(String);

dt.Columns.Add(dc);

dc = new DataColumn();

dc.ColumnName = "c";

dc.DataType = typeof(String);

dt.Columns.Add(dc);

DataRow dr = dt.NewRow();

dr["a"] = "西北";

dr["b"] = "陕西";

dr["c"] = "西安";

dt.Rows.Add(dr);

dr = dt.NewRow();

dr["a"] = "东北";

dr["b"] = "吉林";

dr["c"] = "长春";

dt.Rows.Add(dr);

dr = dt.NewRow();

dr["a"] = "西南";

dr["b"] = "山东";

dr["c"] = "烟台";

dt.Rows.Add(dr);

dr = dt.NewRow();

dr["a"] = "西北";

dr["b"] = "甘肃";

dr["c"] = "天水";

dt.Rows.Add(dr);

dr = dt.NewRow();

dr["a"] = "西北";

dr["b"] = "甘肃";

dr["c"] = "aaa";

dt.Rows.Add(dr);

dr = dt.NewRow();

dr["a"] = "西北";

dr["b"] = "陕西";

dr["c"] = "长安";

dt.Rows.Add(dr);

dr = dt.NewRow();

dr["a"] = "西北";

dr["b"] = "陕西";

dr["c"] = "长安";

dt.Rows.Add(dr);

dr = dt.NewRow();

dr["a"] = "东北";

dr["b"] = "哈尔冰";

dr["c"] = "詹姆斯";

dt.Rows.Add(dr);

return dt;

}

}

$(document).ready(function () {

$.ajax({

cache: false,

async: false,

type: "POST",

url: "WebForm1.aspx/GetJsonTree",

contentType: "application/json; charset=utf-8",

dataType: "json",

success: function (results) {

var strJSON = results.d; //得到的JSON

var data = eval("(" + strJSON + ")"); //转换后的JSON对象

var opts = {

showCheckBoxes: true,

nodes: data.nodes

};

$("#tree").html("");

$("#tree").wijtree(opts);

}

})

});

$(document).ready(

);

以上方法仅仅实现功能,未经测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值