2014-01-02 3 views
0

Если у меня есть таблица ниже в SQL Server. Есть ли способ загрузить его в дерево Kendo ui MVC? Все демонстрации на своем сайте имеют статические узлы дерева. Я попытался, но это как-то не объединяет вещи.Kendo ui MVC treeview from sql server

Id Имя ParentId

1 США NULL

2 Техас 1

3 Хьюстон 2

4 Кэйти 3

5 Пружина 3

6 Флорида 1

7 Tallahassee 6

8 Massachusetts 1

9 Boston 8

10 Springfield 9

Вот моя попытка заселенной дерева: Контроллер:

var modelsList = new List<TreeModel>(); 
     var connString = ConfigurationManager.ConnectionStrings["DefaultConnection"]; 

     using (var conn = new SqlConnection(connString.ToString())) 
     using (var sqlCmd = new SqlCommand("SELECT Id, Name, ParentId FROM tblTree ", conn)) 
     {        
      conn.Open(); 
      SqlDataReader reader = sqlCmd.ExecuteReader(); 
      while (reader.Read()) 
      { 
       int id2 = Convert.ToInt32(reader["Id"]); 
       string attributeName = reader["AttributeName"].ToString(); 
       var parentId = reader["ParentId"]; 
       var model = new TreeModel(); 
       model.Id = id2; 
       model.Name = attributeName; 
       if (parentId != DBNull.Value) 
        model.hasChildren = Convert.ToInt32(parentId); 
       else 
        model.hasChildren = 0; 

       modelsList.Add(model); 
      } 

     } 

     return Json(modelsList, JsonRequestBehavior.AllowGet); 

ответ

1

Вам необходимо преобразовать свой список в иерархическую структуру данных, чтобы каждый узел имел массив дочерних узлов (древовидное представление будет проверять model.items по умолчанию, но вы можете customize the field name). Here's a post о том, как вы можете это сделать на стороне сервера. К сожалению, в настоящее время невозможно указать поле родительского идентификатора, которое автоматизировало бы это для вас (хотя я бы предложил повысить эту проблему в feedback forum, так как вопрос появился несколько раз).

Смежные вопросы