ztree动态加载数据库后台数据的例子

同步的加载数据是这样的:

<script type="text/javascript">
  function showIconForTree(treeId, treeNode) {
            return !treeNode.isParent;
        };
        function zTreeOnClick(event, treeId, treeNode) {
            alert(treeNode.cId);
        }
        var setting = {
            callback: {
                onClick: zTreeOnClick
            },
            view: {
                showIcon: showIconForTree
            },
            data: {
                key: {
                    children: "children",
                    name: "cName",
                    title: "",
                    url: "url"
                },
                simpleData: {
                    enable: true
                }
            }
        };
        $(document).ready(function () {
            $.ajax({
                type: "post",
                contentType: "application/json",
                url: "Index.aspx/FindAll",
                data: "{}",
                dataType: "json",
                success: function (result) {
                    var zNodes = result.d; //接受webservice里面传过来的list
                    $.fn.zTree.init($("#treeDemo"), setting, zNodes);
                }
            });
        });
    </script>
 异步加载的代码如下:

1、html代码:

引用js:

<link rel="stylesheet"    href="<c:url value='/scripts/zTree-3.5/css/zTreeStyle/zTreeStyle.css'/>" type="text/css">
  <link rel="stylesheet" href="scripts/zTree-3.5/css/zTreeStyle/zTreeStyle.css" type="text/css">
 <script type="text/JavaScript"  src="<c:url value='/scripts/zTree-3.5/js/jQuery.ztree.core-3.5.js'/>"  ></script>
 <script type="text/javascript" src="scripts/zTree-3.5/js/jquery.ztree.all-3.5.js"></script>

<input type = "hidden" name = "yjDm" id = "yjDm"  value="${bzBsm.yjDm}" /> 
    <form:input id = "yj"  path="yj"  cssClass ="required"   readonly ="true" style="width:310px;"/> 
       <a id="menuBtn" href="#" onClick="showMenu(); return false;">选择</a>
 
<div id="menuContent"   style="display:none; position: absolute; width: 310px;">
  <ul id="treeDemo" class="ztree" style="margin-top:0; width:310px;height:150px;"></ul>
 </div>
2、js代码:

<style>
 /**ztree **/
#menuContent ul.ztree {
    border: 1px solid #617775;
    background: #f0f6e4;
    width: 170px;
    height: 160px;
    overflow-y: scroll;
    overflow-x: auto;
}
#menuContent select {
    width: 154px;
    border: 1px solid #82AEE5;
    margin-bottom: 10px;
}
</style>
    <script type="text/javascript">
         <!--
        var setting = {
      
        check: {
                    enable: true,
                    chkboxType: {  "Y" : "", "N" : "" }
                },
            view: {
                  // checkable: true,
                  dblClickExpand: false
            },
             async: { //动态加载
                enable: true,
                url:"/xh/dmbzyjwhb/treeload/dmyj", //加载ztree &nbsp;&nbsp;
                     autoParam:["id","pId","name"],
                dataFilter: filter
            }, 
             
            data: {   //必须添加
                simpleData: {
                    enable: true
                }
            },
            callback: {
                beforeClick: beforeClick,//(点击之前)用于捕获 勾选 或 取消勾选 之前的事件回调函数,并且根据返回值确定是否允许 勾选 或 取消勾选
             //  onClick: onClick
               onCheck: onCheck
            }
        }; 
        // &nbsp;var zNodes = .... //静态
         function filter(treeId, parentNode, childNodes) {
            if (!childNodes) return null;
            for (var i=0, l=childNodes.length; i<l; i++) {
                childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');
            }
            return childNodes;
        }
        function beforeClick(treeId, treeNode) {
            var check = (treeNode && !treeNode.isParent);//是节点,并且不是父级
            if (!check) alert("只能选择语境");
            return check;
        }
        function onClick(e, treeId, treeNode) {    //
            var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
           nodes = zTree.getSelectedNodes(),//获取 zTree 当前被选中的节点数据集合(按Ctrl多选择)
            v = "";
            va= "" ;
              nodes.sort(function compare(a,b){return a.id-b.id;});//按照id从小到大进行排序
            for (var i=0, l=nodes.length; i<l; i++) {
               if(i==0){
                 v += nodes[i].name  ;
                 va += nodes[i].id ;
               }else{
                v += ","+nodes[i].name  ;
               va += ","+nodes[i].id ;
               }
            }
        //  if (v.length > 0 ) 
        //  v = v.substring(0, v.length-1);
            var cityObj = $("#yjDm");
            cityObj.attr("value", va);//设置文本框的val 值
           $('#yj').attr("value",v) ; // 设置文本框的text值
        }
         function onCheck(e, treeId, treeNode) {
            var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
            nodes = zTree.getCheckedNodes(true),
            v = "";
            va= "" ;
            for (var i=0, l=nodes.length; i<l; i++) {
                //v += nodes[i].name + ",";
                 if(i==0){
                     v += nodes[i].name  ;
                     va += nodes[i].id ;
                   }else{
                    v += ","+nodes[i].name  ;
                   va += ","+nodes[i].id ;
                   }
            }
        //   if (v.length > 0 ) v = v.substring(0, v.length-1);
            var cityObj = $("#yjDm");
            cityObj.attr("value", va);
           $('#yj').attr("value",v) ;
        }
    
        function showMenu() {
            var cityObj = $("#yj");//输入框
            var cityOffset = $("#yj").offset();//获取匹配元素在当前视口的相对偏移
            //cityOffset.left 元素在当前视口的相对偏移
            //slideDown 通过高度变化(向下增大)来动态地显示所有匹配的元素,在显示完成后可选地触发一个回调函数。
            $("#menuContent").css({left:165 + "px", top:  125+ "px"}).slideDown("fast");
            
            $("body").bind("mousedown", onBodyDown);//给body绑定鼠标按下事件
        }
        function hideMenu() {
            $("#menuContent").fadeOut("fast");
            $("body").unbind("mousedown", onBodyDown);
        }
        //event 代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。
        //event.target 直接接受事件的目标DOM元素
        function onBodyDown(event) {
            //如果接受事件的目标DOM元素的id 不是menuBtn(选择) 或 不是menuContent(菜单内容) 或  menuContent对象中元素的个数不大于0
            //点击不是选择按钮,不是菜单内容的时候就隐藏下拉目录
            if (!(event.target.id == "menuBtn" || event.target.id == "menuContent" || $(event.target).parents("#menuContent").length>0)) {
                hideMenu();
            }
        }
        $(document).ready(function(){
            $.fn.zTree.init($("#treeDemo"), setting); // 静态,zNodes
        });
        //-->
    </SCRIPT>

3、后台提供数据的代码。自行组织符合ztree要求的字符串即可。

List<Map> menuList =  dmBzYjwhbManager.yjZtree("2","2");    
super.ajaxOut(JSONArray.fromObject(menuList).toString(), response);

时间: 2024-08-04 04:51:17

ztree动态加载数据库后台数据的例子的相关文章

easyui如何动态加载表头及其数据

问题描述 easyui如何动态加载表头及其数据 通过easyui动态的定义表头数据(从数据库拼接起来的),数据也是拼接,如何实现呢 解决方案 现在用jquery的ajax先加载的数据然后再生成datagrid

Ajax动态加载数据库示例_AJAX相关

复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title

Ajax动态加载数据库示例

复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title

listview-当数据库为空的时候,用lisView动态加载数据空时出现的闪退问题

问题描述 当数据库为空的时候,用lisView动态加载数据空时出现的闪退问题 当我用ListView动态加载数据库中的文件时,当数据库中确实存在文件时,一切正常,能够正常显示. 但是当数据库为空或者吗,没有新建数据库的时候,用ListView加载时,就会出现闪退的问题. 求大神支招,怎么解决.附上我的获取数据库中数据的方法 ```private ArrayList getData(){ SQLiteDatabase db =openOrCreateDatabase("text.db",

jsp-数据动态加载怎么做到,加载到下拉列表框

问题描述 数据动态加载怎么做到,加载到下拉列表框 代码如下,在一打开注册页面怎么加载数据库的数据到下拉列表框中? <td height="36" align="right" >班级:</td> <td height="36"> <select id="classId" name="classId"> <option value="0"

代码-html页面的动态加载后台传回来的数据?

问题描述 html页面的动态加载后台传回来的数据? 一直写静态代码,没做过数据动态加载.比如静态html页面中: <div> <div class=""title""></div> <div> <img src=""test.jpg"" alt=""图片""/> </div> <div class="

Extjs4使用mvc模式,封装Store层的ArrayStore无法动态加载后台数据

问题描述 Extjs4使用mvc模式,封装Store层的ArrayStore无法动态加载后台数据 store层代码 Ext.define('Desktop.store.function.FunctionStore'{ extend: 'Ext.data.ArrayStore' requires:['Desktop.model.function.UserModel'] model: 'Desktop.model.function.UserModel' autoLoad: true proxy:{

php+ajax实现无刷新动态加载数据技术

  无刷新功能我们用到很多很多的,下面我就来给各位介绍一个实例,就是实现php+ajax实现无刷新滚屏加载数据,例子非常的简单大家只要按流程来操作就可以了哦. 我们浏览有些网页的时候,当拉动浏览器的滚动条时到页底时,页面会继续自动加载更多内容供用户浏览.这种技术我暂且称它为滚屏加载技术.我们发现很多网站用到这种技术,必应图片搜索.新浪微博.QQ空间等将该技术应用得淋漓尽致. 滚屏加载技术,就是使用Javascript监视滚动条的位置,每次当滚动条到达浏览器窗口底部时,触发一个Ajax请求后台PH

php+ajax实现无刷新动态加载数据技术_php实例

我们浏览有些网页的时候,当拉动浏览器的滚动条时到页底时,页面会继续自动加载更多内容供用户浏览.这种技术我暂且称它为滚屏加载技术.我们发现很多网站用到这种技术,必应图片搜索.新浪微博.QQ空间等将该技术应用得淋漓尽致. 滚屏加载技术,就是使用Javascript监视滚动条的位置,每次当滚动条到达浏览器窗口底部时,触发一个Ajax请求后台PHP程序,返回相应的数据,并将返回的数据追加到页面底部,从而实现了动态加载,其实就是一个典型的Ajax应用.本文将使用jQuery,结合PHP,mysql以及JS