背景: postgresl + c# + dhtmlx suit
乙個表生成乙個json串,這個不是很麻煩:
1.在資料庫(postges)中: json_agg(row_to_json(t))
2.在c#中直接for 迴圈 拼接是沒有問題
這都不是我想要的,
我要的更多:一棵樹狀的json串
如上的表生成如下的樹:
[說明:表中的資料理論上可能是無限級的方案1: 在資料庫中生成.各種測試,在stackoverflow 上也找, 但方案都是針對某乙個層的,, ]},
]},]}
]},]
或是具體某些資料, 花了兩到三天,最終放棄!
方案2: 當然就是生成table, 在c# 裡拼接, 看起來不是那麼的難, 至少比postgres 簡單
可是事實上, 並不容易(對我來說)
最終寫了乙個很爛很爛的類吧, 如下:
public呼叫時:1. 直接先生成乙個表(select * from table) mytable2. jsontree mytree = new jsontree(mytable);string json = mytree.getjson();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 += "]"
; }
}
雖然不是很美,不管怎麼樣, 至少它工作了!
以後有機會再作修改!
這裡有個小插曲:生成時 是這樣的 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天。這樣是乙個很規矩的做法,而且也很符合邏輯。但是,如果是為了達到目的的話,是不用這麼麻煩的 ...