2013-02-28 5 views
3

Я использую JSON для отображения JsTree. JSON создается в виде строки через рекурсивную функцию. Теперь я прошел несколько тестов с меньшими/менее сложными деревьями и заставил его работать. Я использовал JSONLint для проверки действительного JSON и в итоге получил правильный синтаксис. Теперь, когда я пытаюсь отобразить предполагаемое большое дерево, он просто застрял в загрузке .gif (который раньше был из-за неправильного JSON), но после проверки его на JSONLint это было правильно.JsTree с JSON застрял при загрузке

Любые возможные причины для этого? Я сомневаюсь, что дерево может быть слишком большим или что-то еще.

рекурсивной функции:

public void getViewTree(ref string tree, Int32? id = null) 
     { 
      var topNodes = (from items in db.AssessmentViewItems 
          select items).Take(1); 

      #region getChildren via LINQ 
      if (id == null) 
      { 
       topNodes = from items in db.AssessmentViewItems 
          where items.ParentAssessmentViewItemID == null 
          && items.AssessmentViewID == 17 
          select items; 
      } 
      else 
      { 

       topNodes = from items in db.AssessmentViewItems 
          where items.ParentAssessmentViewItemID == id 
          && items.AssessmentViewID == 17 
          select items; 
      } 
      #endregion 

      int counter = 1; 
      int max = (int)topNodes.Count(); 
      foreach (var node in topNodes) 
      { 

       if (node.ParentAssessmentViewItemID == null) 
       { 
        {\"id\":\"532topNode\",\"selected\":true},\"children\":[null, 
        tree += "{\"data\":\"" + node.Title.Trim().Replace("\"","").Replace("("," ").Replace(":"," ").Replace("-"," ").Replace("&","and").Replace("/"," ").Replace("\\"," ").Replace(","," ").Replace("•", " ") + "\",\"attr\":{\"id\":\"" + node.AssessmentViewItemID + "\", \"selected\":true}, \"children\":["; 

        getViewTree(ref tree, node.AssessmentViewItemID); 
        tree += "}]"; 
        if (counter < max) 
        { 
         tree += "},"; 
        } 
       } 
       else if (node.Type.Equals("Legal Topic")) 
       { 
        tree += "{\"data\":\"" + node.Title.Trim().Replace("\"", "").Replace("(", " ").Replace(":", " ").Replace("-", " ").Replace("&", "and").Replace("/", " ").Replace("\\", " ").Replace(",", " ").Replace("•", " ") + "\",\"attr\":{\"id\":\"" + node.AssessmentViewItemID + "\", \"selected\":true}"; 

        if (counter < max) 
        { 
         tree += "},"; 
        } 

       } 
       else 
       { 
        var topNodes1 = from items in db.AssessmentViewItems 
           where items.ParentAssessmentViewItemID == node.AssessmentViewItemID 
           && items.AssessmentViewID == 17 
           select items; 

        if (topNodes1.Count() > 0) 
        { 

         tree += "{\"data\":\"" + node.Title.Trim().Replace("\"", "").Replace("(", " ").Replace(":", " ").Replace("-", " ").Replace("&", "and").Replace("/", " ").Replace("\\", " ").Replace(",", " ").Replace("•", " ") + "\",\"attr\":{\"id\":\"" + node.AssessmentViewItemID + "\", \"selected\":true}, \"children\":["; 
        } 
        else 
        { 
         tree += "{\"data\":\"" + node.Title.Trim().Replace("\"", "").Replace("(", " ").Replace(":", " ").Replace("-", " ").Replace("&", "and").Replace("/", " ").Replace("\\", " ").Replace(",", " ").Replace("•", " ") + "\",\"attr\":{\"id\":\"" + node.AssessmentViewItemID + "\", \"selected\":true}"; 
        } 

        getViewTree(ref tree, node.AssessmentViewItemID); 

        if (topNodes1.Count() > 0) 
        { 
         tree += "}]"; 
        } 

        if (counter < max) 
        { 
         tree += "}"; 
         tree += ","; 
        } 

       } 

       counter++; 
      } 
     } 

JS:

$(function() { 
    $("#demoTree").jstree({ 
     "json_data": { 
      "data": treeModel 
     }, 
     "plugins": ["themes", "json_data", "ui"], 

    }); 
}); 

Вызов рекурсивной функции:

string tree = "["; 

getViewTree(ref tree); 

tree += "}]"; 

return View("About", "_Layout", tree); 

После использования Chrome Dev Tools, ошибка, что я получаю от него:

Неоткрытый SyntaxError: Неожиданный токен ILLEGAL (программа): 54 Недоступно Ни данные, ни параметры ajax.

Я проверил его для синтаксиса JSONLint. Маленькое дерево генерируется штрафом без этих ошибок 2

+0

любой код для начала работы? Какая у вас ошибка? – Imperative

+0

Нет ошибки, есть только загрузка .gif. Я могу дать вам JSON, если это поможет? –

+0

Я добавил свой код на первое сообщение. –

ответ

2

Проблема решена с помощью дерева DevExpress. Точная же строка JSON.

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