zoukankan      html  css  js  c++  java
  • kendoTreeView,需要注意的地方

    今天使用了下kendoUI中的TreeView控件,一开始的时候总是不成功,

    总是会报 Uncaught TypeError: Cannot read property 'toLowerCase' of undefined,

    后来查询相关的API,原来TreeView是比较特殊的控件,不能绑定kendo.data.DataSource数据源,

    数据源必须是kendo.data.HierarchicalDataSource类型的数据源,

    将数据源改为该类型的以后,任然报错,而且是奇怪的错误提示。。。

    Uncaught TypeError: e.slice is not a function

    使我又郁闷了半天,经由同事的提醒,我突然发现树的数据可能有问题,

    代码如下:

     1     /**
     2      * 获取文档设置信息(树)
     3      */
     4     @RequestMapping("/getDocSettingsTree")
     5     @ResponseBody
     6     public String getDocSettingsTree(HttpSession session,HttpServletRequest request) {
     7         try{
     8             Settings rootSettings = new Settings();
     9             rootSettings.setSettingId("-1");
    10             rootSettings.setSettingName("文档分类");
    11             rootSettings.setSettingType("2");
    12             getSubSettings(rootSettings);
    13             String settingList = JsonMapper.alwaysMapper().toJson(rootSettings);
    14             return settingList;
    15             
    16         }catch(Exception e){
    17             return "查询出错!";
    18         }
    19     }

    这里的根节点是单个对象,必须在包装成LIST才行,

    于是修改代码为:

        /**
         * 获取文档设置信息(树)
         */
        @RequestMapping("/getDocSettingsTree")
        @ResponseBody
        public String getDocSettingsTree(HttpSession session,HttpServletRequest request) {
            try{
                Settings rootSettings = new Settings();
                rootSettings.setSettingId("-1");
                rootSettings.setSettingName("文档分类");
                rootSettings.setSettingType("2");
                getSubSettings(rootSettings);
                //必须包装成LIST回传
                List<Settings> listSettings = new ArrayList<Settings>();
                listSettings.add(rootSettings);
                String settingList = JsonMapper.alwaysMapper().toJson(listSettings);
                return settingList;
                
            }catch(Exception e){
                return "查询出错!";
            }
        }

    这样问题便解决了

    JS代码:

     1 function initTree(){
     2     
     3     $.ajax({
     4         type: "POST",
     5         async: true,
     6         url: ctx + "/Settings/getDocSettingsTree",
     7         dataType: "json",
     8         success: function(data){
     9 
    10             var dataSource = new kendo.data.HierarchicalDataSource({
    11                 data: data,
    12                 schema: {
    13                     model: {
    14                         id: "settingId",
    15                         settingType: "settingType",
    16                         children: "subSettings"
    17                     }
    18                 }
    19             });
    20             $("#docTree").kendoTreeView({
    21                 dataSource: dataSource,
    22                 dataValueField: "id",    
    23                 dataTextField: "settingName"
    24             });
    25             
    26             $("#docTree").data("kendoTreeView").expand(".k-item");
    27         }
    28     }); 
    29 }

    这里的重点就是数据源的格式必须是kendo.data.HierarchicalDataSource

    并且数据是LIST形式的。

  • 相关阅读:
    Miller-Rabin算法
    拟阵
    第一次作业
    实验四 201771010101 白玛次仁
    201771010101 白玛次仁
    201771010101 白玛次仁 《2018面向对象程序设计(Java)课程学习进度条》
    201771010101 白玛次仁
    201771010101 白玛次仁
    达拉草201771010105《面向对象程序设计(java)》第二周学习总结
    达拉草201771010105《面向对象程序设计(java)》第一周学习总结
  • 原文地址:https://www.cnblogs.com/zhoucloud/p/5284320.html
Copyright © 2011-2022 走看看