在剑道树视图中仅显示展开的项目

时间:2018-10-31 10:11:56

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

我正在研究Kendo和.net mvc3。我的问题是,当我单击展开按钮时,仅显示展开的项目,但我希望它看起来像一个层次结构文件夹:

在父文件夹单击之前

----

当我点击展开按钮

----

这是我的代码:

function OnSelectTree(Id) {
    var treeview = $("#PathTreeView").data("kendoTreeView").dataItem(Id.node);
    var treeview2 = $("#PathTreeView").data("kendoTreeView");
    console.log(treeview.Id);
    //treeview2.dataSource.read("Read", "ManagePhoto", new { path: id });
    treeview2.dataSource.read({ Id: treeview.Id });

   @(Html.Kendo().TreeView()
.Name("PathTreeView")
.DataTextField("Name")
.DataSource(dataSource => dataSource
    .Read(read => read.Action("Read", "ManagePhoto"))


)
.ExpandAll(true)
        .Events(e => e
                    .Select("OnSelectTree")
            //.DataBound("OnSelectTree1")
                    .Expand("OnSelectTree")
            )

和控制器

   public JsonResult Read(string Id)
        {
            string FileRepository = db.SystemParameter.Where(n => n.Key == "FileRepository").Select(n => n.Value).FirstOrDefault();
            //const string StartDirectory = @"D:\SOKMUpload\Upload";
            Id = Id ?? FileRepository;
            var files = Directory.GetFiles(Id).Select(file =>
                 new DownloadPhotoViewModel
                 {
                     Id = file,
                     hasChildren = false,
                     Name = Path.GetFileName(file)
                 });

        var directories = Directory.GetDirectories(Id).Select(dir =>
             new DownloadPhotoViewModel
             {
                 Id = dir,
                 hasChildren = Directory.GetFiles(dir).Any() || Directory.GetDirectories(dir).Any(),
                 Name = Path.GetFileName(dir)
             });

        var result = files.ToList();
        result.AddRange(directories);
        result = result.OrderBy(x => !x.hasChildren).ToList();
        return this.Json(result, JsonRequestBehavior.AllowGet);
    }

thankyouuu,抱歉我的英语不好

1 个答案:

答案 0 :(得分:0)

(我的声誉低至无法评论:()。 现在的问题(我认为)是您要仅用子树替换整个数据源,而不是将其添加到当前数据源?

我还相信,如果有人在扩展时更改目录/文件,则会遇到问题(因为您使用数字计数来告诉要扩展的位置?

请结帐telerik demo,我不喜欢将路径发布到控制器,但是我认为这是确保文件结构没有改变的最简单方法。