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形式的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM