3

我正在使用 JSON 来显示 JsTree。JSON 正在通过递归函数构建为字符串。现在,我对较小/不太复杂的树进行了一些测试,并让它工作。我使用 JSONLint 检查有效的 JSON 并最终得到正确的语法。现在,当我尝试显示预期的大树时,它只是卡在加载 .gif 上(这曾经是因为 JSON 不正确),但在 JSONLint 上检查后它是正确的。

这有什么可能的原因吗?我怀疑这棵树可能太大或任何东西。

递归函数:

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 开发工具后,我从中得到的错误:

Uncaught SyntaxError: Unexpected token ILLEGAL (program):54 Uncaught 既没有提供数据也没有提供 ajax 设置。

我确实在 JSONLint 上检查了它的语法。没有这两个错误的小树生成良好

4

1 回答 1

2

使用 DevExpress 树解决了问题。完全相同的 JSON 字符串。

于 2013-08-14T13:42:50.723 回答