ошибка максимального размера стека вызовов в списке дерева пользовательского интерфейса kendo

#javascript #kendo-ui #kendo-grid #kendo-treeview

#javascript #kendo-ui #kendo-grid #kendo-просмотр дерева

Вопрос:

Здравствуйте, я пользователь, использующий kendo ui. Я попытался отобразить следующие данные с помощью списка дерева пользовательского интерфейса Kendo, но я получаю ошибку максимального размера стека вызовов. Когда я нажимаю на ошибку в деталях, ошибка возникает в defaultParentId (kendo.all.js: 114128). Можете ли вы сказать мне, почему? Ниже приведен вариант источника данных, который я использовал.

 schema:{  
   model:{  
      id:"codeNo",
      parentId:"upCodeNo",
      fields:{  
         codeNo:{  
            type:'number'
         },
         upCodeNo:{  
            type:'number'
         }
      },
      expanded:true
   }
  

И ниже приведены данные, которые я фактически импортировал.

 {"CODE":"N", "LANG_CLASS":"", "CODE_NAME":"", "REMARKS":"", "UP_CODE_NO":0, "CODE_NO":1}, {"CODE":"Y", "LANG_CLASS":"", "CODE_NAME":"", "REMARKS":"", "UP_CODE_NO":0, "CODE_NO":2}, {"CODE":"N", "LANG_CLASS":"CNA", "CODE_NAME":"", "REMARKS":"", "UP_CODE_NO":1, "CODE_NO":3}, {"CODE":"Y", "LANG_CLASS":"CNA", "CODE_NAME":"", "REMARKS":"", "UP_CODE_NO":2, "CODE_NO":4}, {"CODE":"N", "LANG_CLASS":"ENG", "CODE_NAME":"", "REMARKS":"", "UP_CODE_NO":1, "CODE_NO":5}, {"CODE":"Y", "LANG_CLASS":"ENG", "CODE_NAME":"", "REMARKS":"", "UP_CODE_NO":2, "CODE_NO":6}, {"CODE":"N", "LANG_CLASS":"JPN", "CODE_NAME":"", "REMARKS":"", "UP_CODE_NO":1, "CODE_NO":7}, {"CODE":"Y", "LANG_CLASS":"JPN", "CODE_NAME":"사용(일본어)", "REMARKS":"", "UP_CODE_NO":2, "CODE_NO":8}, {"CODE":"N", "LANG_CLASS":"KOR", "CODE_NAME":"미사용", "REMARKS":"", "UP_CODE_NO":1, "CODE_NO":9}, {"CODE":"Y", "LANG_CLASS":"KOR", "CODE_NAME":"사용", "REMARKS":"", "UP_CODE_NO":2, "CODE_NO":10}
  

Комментарии:

1. Почему вы задаете codeNo в качестве идентификатора, когда данные, которые вы используете, содержат только поле CODE_NO ?

2. Пожалуйста, отформатируйте свои данные для удобства чтения

Ответ №1:

Вы не определяете правильное поле для источника данных Kendo UI.

На основе документации, найденной на https://demos .telerik.com/kendo-ui/treelist/local-data-binding

Правильный способ определения родительского идентификатора находится в самих данных, т.Е.

 { "UP_CODE_NO":2, "CODE_NO":10 }  //wrong
{ "parentId":2, "CODE_NO":10 }    //correct
  

Итак, вместо того, чтобы использовать данные, которые у вас есть сейчас, вам нужно преобразовать данные с помощью такой функции, как map , например

 dataArray.map(function (data) {
    data["parentId"] = data["UP_CODE_NO"] > 0 ? data["UP_CODE_NO"] : null;
    return data;
})
  

Ниже приведен рабочий фрагмент с использованием данных, которые вы указали в своем вопросе.

 $(document).ready(function () {
    var dataSource = new kendo.data.TreeListDataSource({
        data: [
            {"CODE":"N", "LANG_CLASS":"", "CODE_NAME":"", "REMARKS":"", "UP_CODE_NO":0, "CODE_NO":1}, {"CODE":"Y", "LANG_CLASS":"", "CODE_NAME":"", "REMARKS":"", "UP_CODE_NO":0, "CODE_NO":2}, {"CODE":"N", "LANG_CLASS":"CNA", "CODE_NAME":"", "REMARKS":"", "UP_CODE_NO":1, "CODE_NO":3}, {"CODE":"Y", "LANG_CLASS":"CNA", "CODE_NAME":"", "REMARKS":"", "UP_CODE_NO":2, "CODE_NO":4}, {"CODE":"N", "LANG_CLASS":"ENG", "CODE_NAME":"", "REMARKS":"", "UP_CODE_NO":1, "CODE_NO":5}, {"CODE":"Y", "LANG_CLASS":"ENG", "CODE_NAME":"", "REMARKS":"", "UP_CODE_NO":2, "CODE_NO":6}, {"CODE":"N", "LANG_CLASS":"JPN", "CODE_NAME":"", "REMARKS":"", "UP_CODE_NO":1, "CODE_NO":7}, {"CODE":"Y", "LANG_CLASS":"JPN", "CODE_NAME":"사용(일본어)", "REMARKS":"", "UP_CODE_NO":2, "CODE_NO":8}, {"CODE":"N", "LANG_CLASS":"KOR", "CODE_NAME":"미사용", "REMARKS":"", "UP_CODE_NO":1, "CODE_NO":9}, {"CODE":"Y", "LANG_CLASS":"KOR", "CODE_NAME":"사용", "REMARKS":"", "UP_CODE_NO":2, "CODE_NO":10}
        ].map(function (data) { data["parentId"] = data["UP_CODE_NO"] > 0 ? data["UP_CODE_NO"] : null; return data; }),
        schema: {
            model: {
                id: "CODE_NO",
                expanded: true
            }
        }
    });

    $("#treelist").kendoTreeList({
        dataSource: dataSource,
        height: 540,
        columns: [
            { field: "LANG_CLASS" },
            { field: "CODE_NAME" },
            { field: "REMARKS" }
        ]
    });
});  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="http://kendo.cdn.telerik.com/2019.1.220/js/kendo.all.min.js"></script>
<link rel="stylesheet" href="http://kendo.cdn.telerik.com/2019.1.220/styles/kendo.common.min.css">
<link rel="stylesheet" href="http://kendo.cdn.telerik.com/2019.1.220/styles/kendo.default.min.css">
<link rel="stylesheet" href="http://kendo.cdn.telerik.com/2019.1.220/styles/kendo.mobile.min.css">
<div id="treelist"></div>