KendoUI 树视图子项显示为未定义

KendoUI treeview children are displayed as undefined

我在 kendoUI 中有一个树视图,其中主要节点正在调用一个 mvc 控制器,该控制器查看是否传入了可为 null 的 id,然后使用不同的模型。

我打的是url:http://localhost:2949/Report/GetReportGroupAssignments

我看到了这个JSON

[
    {"Id":1,"ReportGroupName":"Standard Reports","ReportGroupNameResID":null,"SortOrder":1},
    {"Id":2,"ReportGroupName":"Custom Reports","ReportGroupNameResID":null,"SortOrder":2},
    {"Id":3,"ReportGroupName":"Retail Reports","ReportGroupNameResID":null,"SortOrder":3},
    {"Id":4,"ReportGroupName":"Admin Reports","ReportGroupNameResID":null,"SortOrder":5},
    {"Id":5,"ReportGroupName":"QA Reports","ReportGroupNameResID":null,"SortOrder":4}
]

现在我的 mvc 控制器看起来像这样

public JsonResult GetReportGroupAssignments(int? id)
{
    var model = new List<ReportGroup>();
    var defModel = new List<ReportDefinition>();

    try
    {
        if (id == null)
        {
            model = _reportService.GetReportGroups("en-us").ToList();
            return Json(model, JsonRequestBehavior.AllowGet);
        }
        else
        {
            defModel = _reportService.GetReportDefinitions().Where(e=>e.ReportGroupID ==Convert.ToInt32(id)).ToList();
            return Json(defModel, JsonRequestBehavior.AllowGet);
        }   
    }
    catch (Exception ex)
    {
        Logger.Error(ex, "Error loading LoadReportList.");
        return null;
    }
}

我的 Kendo javascript 如下所示:

var serviceRoot = "/Report"; // "//demos.telerik.com/kendo-ui/service";
homogeneous = new kendo.data.HierarchicalDataSource({
    transport: {
        read: {
            url: serviceRoot + "/GetReportGroupAssignments", //"/LoadReportTree", // "/Employees",
            dataType: "json" 
        }
    },
    schema: {
        model: {
            id: "Id" //"ReportGroupName"
            ,hasChildren: "Id"
        }
    }
});

var treeview = $("#treeview").kendoTreeView({
    expanded: true,
    dragAndDrop: true,
    dataSource: homogeneous,
    dataTextField: "ReportGroupName" 

}).data("kendoTreeView");

似乎调用(我发现子记录有一个 "load" 方法,它在 seens 后面调用,所以基本上我传入 ID 以便从另一个模型获取数据(table 分贝)
(Id 使用 automapper 映射到 ReportGroupID )

因此,当我单击 "Standard Rports" 左侧时,我将所有这些子项都设置为未定义,如何让它们正确显示?

更新:我的报告定义class:

public class ReportDefinition {
    public override int Id { get; set; } 
    public string ReportKey { get; set; } 
    public string ReportName { get; set; } 
    public int? ReportNameResID { get; set; } 
    public string ReportDef { get; set; } 
    public int? ReportDefinitionResID { get; set; } 
    public string ReportAssembly { get; set; } 
    public string ReportClass { get; set; } 
    public int ReportGroupID { get; set; } 
    public int AppID { get; set; } 
    public int SortOrder { get; set; } 
    public bool IsSubReport { get; set; }
} 

我认为您的问题是 class ReportDefinition 没有 属性 调用:ReportGroupName。这就是 TreeView 显示 'undefined'.

的原因

尝试将此 属性 添加到您的 ReportDefinition class 中,例如:

public class ReportDefinition {

    // Other Properties

    // I guess this property is missing
    public string ReportGroupName { get; set; }

}