首页 > 代码库 > bootstrap的treeview checked属性 ----解决方案

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

所以将双引号加上 ,错误解决

本文出自 “yipaixiaoyayin” 博客,请务必保留此出处http://yipaixiaoyayin.blog.51cto.com/8812323/1910305

bootstrap的treeview checked属性 ----解决方案