Ошибка в источнике данных для Telerik MVC DropDownTree - PullRequest
0 голосов
/ 16 декабря 2018

My Telerik MVC Dropdowntree сообщает об ошибке «Объект не поддерживает свойство или метод« уровень »» для источника данных.

Может кто-нибудь взглянуть ниже и сказать мне, что не так?

MVC выглядит следующим образом

@(Html.Kendo().DropDownTree()
                    .Name("dropdowntree")
                    .DataTextField("Name")
                    .DataValueField("Id")

                    .HtmlAttributes(new { style = "width: 100%" })
                    .DataSource(dataSource => dataSource
                        .Read(read => read
                            .Action("DoLayers2", "Dev")
                        )
                    )
)

Мой контроллер возвращает следующий JSON:

[  
   {  
      "Id":1,
      "ParentCategoryId":0,
      "Name":"First Layer",
      "items":[  
         {  
            "Id":2,
            "ParentCategoryId":1,
            "Name":"First SubLayer1",
            "items":[  

            ]
         },
         {  
            "Id":3,
            "ParentCategoryId":1,
            "Name":"First SubLayer2",
            "items":[  

            ]
         },
         {  
            "Id":4,
            "ParentCategoryId":1,
            "Name":"First SubLayer3",
            "items":[  

            ]
         }
      ]
   },
   {  
      "Id":5,
      "ParentCategoryId":0,
      "Name":"Second Layer",
      "items":[  
         {  
            "Id":6,
            "ParentCategoryId":5,
            "Name":"Second SubLayer1",
            "items":[  

            ]
         },
         {  
            "Id":7,
            "ParentCategoryId":5,
            "Name":"Second SubLayer2",
            "items":[  
               {  
                  "Id":8,
                  "ParentCategoryId":7,
                  "Name":"Sub -3",
                  "items":[  

                  ]
               }
            ]
         }
      ]
   }
]

Очевидно, в моем посте слишком много кода и недостаточно деталей, поэтому мне нужно написать что-то глупое в конце поста, чтобы обманом заставить систему опубликовать его.Это довольно раздражает.

1 Ответ

0 голосов
/ 18 января 2019

Я не уверен, что вы можете вернуть все дерево и привязать его к дереву dropdowntree ...

Если вы проверите демо telerik , вы увидите, что они возвращают только один уровень навремя, так что в вашем случае я думаю, что сначала нужны только Id: 1 и Id: 5 первого уровня, а затем он автоматически запросит второй уровень для каждой ветви ... (Id: 1 вернет 2, 3, 4 и Id: 5 вернет 6, 7 и Id: 7 вернет 8)

Вам также придется вернуться, если для каждого узла есть какие-либо дочерние элементы:

[  
   { "Id":1, "Name":"First Layer", "hasChildren": true }, 
   { "Id":5, "Name":"Second Layer", "hasChildren": true }
]

Надеюсь, это поможет!

...