關於dataTable 生成JSON 樹

2022-02-23 23:01:26 字數 1884 閱讀 9494

背景: postgresl + c#  + dhtmlx suit

乙個表生成乙個json串,這個不是很麻煩:

1.在資料庫(postges)中:  json_agg(row_to_json(t))

2.在c#中直接for 迴圈 拼接是沒有問題

這都不是我想要的,

我要的更多:一棵樹狀的json串

如上的表生成如下的樹:

[

, ]},

]},]}

]},]

說明:表中的資料理論上可能是無限級的方案1: 在資料庫中生成.各種測試,在stackoverflow 上也找, 但方案都是針對某乙個層的,

或是具體某些資料, 花了兩到三天,最終放棄!

方案2: 當然就是生成table, 在c# 裡拼接, 看起來不是那麼的難, 至少比postgres 簡單

可是事實上, 並不容易(對我來說)

最終寫了乙個很爛很爛的類吧, 如下:

public

class

jsontree

private datatable _mydt = new

datatable();

private

string json = string

.empty;

public

string

getjson()

getchild(

0,ilvl,imaxlvl);

json = json.substring(8,json.length-8

); //刪除開頭的 items:

return

json;

}private

void

getchild( int32 parentid,int32 ilvl,int32 imaxlvl)

if (convert.toint32(_mydt.rows[i]["

parent_id

"].tostring()) == parentid && ilvl == convert.touint32(_mydt.rows[i]["

level

"].tostring()))

,";}

if (i == irows - 1 && ilvl

if(ilvl==imaxlvl && json.substring(json.length - 1, 1) == "

," && i==irows-1

) json = json.substring(0, json.length - 1

); }

json += "]"

; }

}

呼叫時:1.    直接先生成乙個表(select * from table) mytable2.    jsontree mytree = new jsontree(mytable);string json = mytree.getjson();

雖然不是很美,不管怎麼樣, 至少它工作了!

以後有機會再作修改!

這裡有個小插曲:生成時  是這樣的     items:

我返回時,js怎麼也不認!!!!

原因:標準的json 是以 {}或開頭的

另:       json的key-value都需要雙引號

關於jQuery外掛程式中datatables的學習

reference function inittable ajax function data,callback,settings else columns data的名字和你返回引數裡面json裡的名字相對應,title相當於th,表頭這樣子的,class代表樣式。else return data...

關於DataTable的基本操作

建立表 建立乙個空表 datatable dt newdatatable 建立乙個名為 table new 的空表 datatable dt newdatatable table new 建立列 建立空列 datacolumn dc newdatacolumn dt.columns.add dc 建...

關於JS生成日期和校驗日期

以前寫網頁的時候,經常碰到選擇日期的問題,其實就是判斷某年某月有多少天。一般的做法是先判斷是幾月份,然後決定有多少天 一般用switch 如果是2月的話,還得判斷選擇的年份是不是閏年,再決定是28天還是29天。這樣是乙個很規矩的做法,而且也很符合邏輯。但是,如果是為了達到目的的話,是不用這麼麻煩的 ...