【问题标题】:How to bind a Kendo treeview to a file directory如何将 Kendo 树视图绑定到文件目录
【发布时间】:2015-02-12 16:19:35
【问题描述】:

我想将文件夹层次结构显示为 Kendo 树视图。我假设这涉及将目录转换为 JSON。

这是实现我的目标的正确方法,还是有另一种方法可以将树视图绑定到远程文件目录?

【问题讨论】:

    标签: c# kendo-ui kendo-treeview


    【解决方案1】:

    由于您的标签是kendo-uiC#,我假设您使用的是Kendo UI for ASP.NET MVC。如果不只是使用适当的 JS 更改视图代码,其他代码应该在 ASP.NET MVC 中按预期工作。

    使用 2 个操作创建控制器 PathControllerReadIndex

    在你的Index 视图调用 Kendo UI 树视图助手

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

    为剑道树视图创建一个视图模型 KendoTreeViewViewModel

    public class KendoTreeViewViewModel
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public bool HasChildren { get; set; }
    }
    

    在您的Read action 中返回带有文件和文件夹的 JSON:

    public JsonResult Read(string path)
    {
        const string StartDirectory = @"C:\";
        path = path ?? StartDirectory;
        var files = Directory.GetFiles(path).Select(file => 
            new KendoTreeViewViewModel
                {
                    Id = file,
                    HasChildren = false,
                    Name = Path.GetFileName(file)
                });
    
        var directories = Directory.GetDirectories(path).Select(dir =>
            new KendoTreeViewViewModel
                {
                    Id = dir,
                    HasChildren = true,
                    Name = Path.GetFileName(dir)
                });
    
        var result = files.ToList();
        result.AddRange(directories);
        result = result.OrderBy(x => x.HasChildren).ToList();
    
        return this.Json(result, JsonRequestBehavior.AllowGet);
    }
    

    【讨论】:

    • 通过两个小调整效果很好。 read.Action("Path", "Read") 应该是 read.Action("Read", "Path")Path.GetFileName(Path.GetDirectoryName(dir)) 正在获取根目录的名称,所以我将其更改为 Path.GetFileName(dir)
    猜你喜欢
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 2019-07-10
    相关资源
    最近更新 更多