如何将Kendo树视图绑定到文件目录

时间:2015-02-12 16:19:36

标签: c# kendo-ui kendo-treeview

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

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

1 个答案:

答案 0 :(得分:2)

由于您的代码为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 操作中,使用文件和文件夹返回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);
}