e.slice不是ASP.NET

时间:2016-02-15 13:36:13

标签: c# asp.net kendo-ui treeview kendo-treeview

我有一个asp.net应用程序,我在aspx页面中有kendo ui treeview。在文档就绪,我在aspx页面中调用数据的方法。剑道树视图未动态加载数据。它只显示加载指示器。当我们在aspx页面中提供相同的json数据时,它工作正常。

这是代码

[System.Web.Services.WebMethod]
public static string MakeTreeData()
{
   return "[{ text: \"Node1\", items: [{text:\"Child1\"},{text:\"Child2\"},{text:\"Child3\"}]}]";
}

脚本

var $jQuery2_1 = jQuery.noConflict(true);
$jQuery2_1(document).ready(function () {
        $jQuery2_1.ajax({ url: "Default.aspx/MakeTreeData",
            contentType: "application/json; charset=utf-8",
            type: "post",
            success: function (result) {
                var viewModel = new kendo.data.HierarchicalDataSource({
                    data: JSON.parse(result.d),
                    schema: {
                        model: {
                            children: "items"
                        }
                    }
                });
                $jQuery2_1("#treeview").kendoTreeView({
                    dataSource: viewModel,
                    dataTextField: "text"
                });
            },
            error: function (e) {
                console.log(e);
            }
        });
    });

由于

1 个答案:

答案 0 :(得分:0)

更新下面的方法和脚本解决了问题

<强> MakeTreeData

[System.Web.Services.WebMethod]
public static string MakeTreeData()
{
    JavaScriptSerializer js = new JavaScriptSerializer();
    var parentNodes = new List<Node>();
    var parent = new Node() { Id = "1", Text = "Parent 1", Nodes = new List<Node>() };
    var child = new Node() { Id = "2", Text = "Child 1", Nodes = new List<Node>() };
    parent.Nodes.Add(child);
    parentNodes.Add(parent);
    return js.Serialize(parentNodes);
}

<强>脚本

<div class="demo-section k-content">
    <div id="treeview"></div>
</div>
<script>
    $(document).ready(function () {
        $.ajax({
            url: "Default.aspx/MakeTreeData",
            contentType: "application/json; charset=utf-8",
            type: "POST",
            success: function (result) {
                var jsonData = JSON.parse(result.d);
                var viewModel = new kendo.data.HierarchicalDataSource({
                    data: JSON.parse(result.d),
                    schema: {
                        model: {
                            children: "Nodes"
                        }
                    }
                });
                $("#treeview").kendoTreeView({
                    dataSource: viewModel,
                    dataTextField: "Text"
                });
            },
            error: function (e) {
                console.log(e);
            }
        });
    });
</script>