bootstrap的treeview checked屬性 ----解決方案

今天在開發過程中遇到了兩個小問題,因爲在做樹形結構展示,用的是bootstrap的treeview,在獲取json data的時候有幾點需要注意

1)"pid":5,"id":4,"text":"xx"  這三個屬性是必須要獲取到的,其中pid爲父節點id,id爲該條數據的id,text爲你要顯示的文本

2)"state":{"checked":true}  state屬性 其中checked爲true  意思是說該條被選中,如果爲false則未被選中,我在試驗"checked":true 沒有state屬性的時候發現也是好用的,如果這樣的話在開發過程中可以根據程序選擇用checked:true的形式還是state:{checked:true}

我在開發的時候用的是state屬性,由於用了該屬性同時發現了一些問題,由於在數據庫中沒有進行該字段,所以在實現類執行sql的時候用到了case when then else end的判斷

代碼如下:

sql =" (CASE WHEN (SELECT COUNT(*) FROM T_SM_ROLE_FUNS T2 WHERE T2.FUN_ID=T1.FUN_ID AND T2.ROLE_ID='2')>=1"
    +" THEN '{checked:true}' ELSE '{checked:false}' END ) AS \"state\"

該判斷的意思是,如果有值則checked:true 否則 checked:false

在得到json的過程中得到的形式如下:"state":"{checked:fase}" 但是我想要的json格式是"state":{checked:true} 所以我需要把雙引號去掉,只能在前端進行去除,方式是用replace的方式

代碼如下:

json數據如下:

var treeData2 = [{"id":"3", "pid" : "", "text":"主頁","FUN_ID":"3",
                  "FUN_CD":"5","FUN_NM":"主頁", "state": "{ checked: true}"}];

做替換,代碼如下:

treeData = JSON.stringify(json);
var re = /\:"{checked:/g
var lf = /}\"/g
var jsonD = treeData.replace(re,':{"checked":');
var jsonN = jsonD.replace(lf,"}");

得到的json數據如下:

var treeData2 = [{"id":"3", "pid" : "", "text":"主頁","FUN_ID":"3",
                  "FUN_CD":"5","FUN_NM":"主頁", "state": { "checked": true}}];

在這裏需要注意的是如果是jsp頁面直接執行json串調用treeview的checked對不帶雙引號的"" ,checked屬性是沒有要求的,不會報錯

但是在講jsonN傳到treeview的時候就出現了錯誤,要求一定要把雙引號加上纔可以,錯誤如下

Unexpected token c in JSON at position 54

所以將雙引號加上 ,錯誤解決

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章