Kendo ui 将Kendo Treeview绑定到分层数据源(远程数据)

Kendo ui 将Kendo Treeview绑定到分层数据源(远程数据),kendo-ui,kendo-treeview,Kendo Ui,Kendo Treeview,我在让我的剑道树视图正确绑定到HierarchycalDataSource时遇到了一些问题。目前,我的页面设置为用户可以进行一些选择,然后单击按钮根据他们的选择绑定TreeView 按钮单击处理程序如下所示: $("#btnAdd").click(function () { var treeData = new kendo.data.HierarchicalDataSource({ transport: { read

我在让我的剑道树视图正确绑定到HierarchycalDataSource时遇到了一些问题。目前,我的页面设置为用户可以进行一些选择,然后单击按钮根据他们的选择绑定TreeView

按钮单击处理程序如下所示:

    $("#btnAdd").click(function () {
        var treeData = new kendo.data.HierarchicalDataSource({
            transport: {
                read: {
                    url: "/myURL/",
                    data: { "id": JSON.stringify(multiselect.value()) }, //this is the value from the first selection.
                    datatype: "jsonp",
                    type: "POST"
                }
            },
            schema: {
                model: {
                    id: "HBClassID",
                    children: {
                        schema: {
                            data: "ActiveStudents",
                            model: {
                                id: "ComboID"
                            }
                        }
                    }
                }
            }
        });

        $("#tvAjaxClass").kendoTreeView({
            dataSource: treeData,
            dataTextField: ["HBFullName", "Student.StudentFullName"],
            checkboxes: {
                template: "<input type='checkbox' name='StudentClassID' value='#= item.id #' />",
                checkChildren: true
            }
        });
    });
当我点击这个函数时,进行了ajax调用,返回了数据,顶层绑定良好。除了在展开父节点时从不存在任何子节点外,其他一切似乎都正常工作。我觉得奇怪的是,如果我删除HierarchycalDataSource的传输部分,并将其替换为类似以下内容的本地数据:

    $("#btnAdd").click(function () {
        var treeData = new kendo.data.HierarchicalDataSource({
            data: [{
                "HBClassID": 23400, "HBClassDesc": "Johnson Tutoring Group", "CourseNumber": "", "Section": "", "Period": "", "HBFullName": "Johnson Tutoring Group",
                "ActiveStudents":
                    [
         { "HBClassID": 23400, "StudentID": 21890, "Student": { "UserId": 21890, "UserName": "DFaast", "UserFirstName": "Doyle", "UserLastName": "Faast", "StudentFullName": "Doyle Faast" }, "ComboID": "23400:21890" }
                    ]
            }],
            schema: {
                model: {
                    id: "HBClassID",
                    children: {
                        schema: {
                            data: "ActiveStudents",
                            model: {
                                id: "ComboID"
                            }
                        }
                    }
                }
            }
        });

        $("#tvAjaxClass").kendoTreeView({
            dataSource: treeData,
            dataTextField: ["HBFullName", "Student.StudentFullName"],
            checkboxes: {
                template: "<input type='checkbox' name='StudentClassID' value='#= item.id #' />",
                checkChildren: true
            }
        });
    });
$(“#btnAdd”)。单击(函数(){
var treeData=new kendo.data.hierarchycalDataSource({
数据:[{
“HBClassID”:23400,“HBClassDesc”:“约翰逊辅导组”、“课程编号”:“章节”:“期间”:“HBFullName”:“约翰逊辅导组”,
“活跃学生”:
[
{“HBClassID”:23400,“StudentID”:21890,“Student”:{“UserId”:21890,“UserName”:“DFaast”,“UserFirstName”:“Doyle”,“UserLastName”:“Faast”,“StudentFullName”:“Doyle Faast”},“ComboID”:“23400:21890”}
]
}],
模式:{
型号:{
id:“HBClassID”,
儿童:{
模式:{
数据:“活跃学生”,
型号:{
id:“ComboID”
}
}
}
}
}
});
$(“#tvAjaxClass”).kendoTreeView({
数据来源:treeData,
dataTextField:[“HBFullName”,“Student.StudentFullName”],
复选框:{
模板:“”,
孩子们:是的
}
});
});
然后TreeView按我希望的方式绑定。我能够扩展一个哈佛商学院的课程,并看到其中所有活跃的学生


绑定到远程数据和本地数据有什么不同吗?

我更新了我的click事件,使其看起来像这样,它适用于我的情况,但是我不知道这是否是正确的方法

    $("#btnAdd").click(function () {
        var treeData = new kendo.data.HierarchicalDataSource({
            transport: {
                read: {
                    url: "/RightPath/Assignment/BindTreeView/",
                    data: { "id": JSON.stringify(multiselect.value()) },
                    datatype: "json",
                    type: "POST"
                }
            },
            schema: {
                model: {
                    id: "ComboID",
                    children: "ActiveStudents"
                }
            }
        });

        $("#tvAjaxClass").kendoTreeView({
            dataSource: treeData,
            dataTextField: ["HBFullName", "Student.StudentFullName"],
            dataValueField: ["HBClassID", "ComboID"],
            checkboxes: {
                template: "<input type='checkbox' name='StudentClassID' value='#= item.id #' />",
                checkChildren: true
            }
        });
    });
$(“#btnAdd”)。单击(函数(){
var treeData=new kendo.data.hierarchycalDataSource({
运输:{
阅读:{
url:“/RightPath/Assignment/BindTreeView/”,
数据:{“id”:JSON.stringify(multiselect.value())},
数据类型:“json”,
类型:“职位”
}
},
模式:{
型号:{
id:“ComboID”,
儿童:“活跃的学生”
}
}
});
$(“#tvAjaxClass”).kendoTreeView({
数据来源:treeData,
dataTextField:[“HBFullName”,“Student.StudentFullName”],
dataValueField:[“HBClassID”,“ComboID”],
复选框:{
模板:“”,
孩子们:是的
}
});
});
    $("#btnAdd").click(function () {
        var treeData = new kendo.data.HierarchicalDataSource({
            transport: {
                read: {
                    url: "/RightPath/Assignment/BindTreeView/",
                    data: { "id": JSON.stringify(multiselect.value()) },
                    datatype: "json",
                    type: "POST"
                }
            },
            schema: {
                model: {
                    id: "ComboID",
                    children: "ActiveStudents"
                }
            }
        });

        $("#tvAjaxClass").kendoTreeView({
            dataSource: treeData,
            dataTextField: ["HBFullName", "Student.StudentFullName"],
            dataValueField: ["HBClassID", "ComboID"],
            checkboxes: {
                template: "<input type='checkbox' name='StudentClassID' value='#= item.id #' />",
                checkChildren: true
            }
        });
    });