c# - 如何将 Kendo Treeview 绑定(bind)到文件目录

标签 c# kendo-ui kendo-treeview

我想将文件夹层次结构显示为 Kendo Treeview 。我认为这涉及将目录转换为 JSON。

这是实现我的目标的可能且正确的方法吗?还是有其他方法将 Treeview 绑定(bind)到远程文件目录?

最佳答案

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

创建具有 2 个操作的 Controller PathController:ReadIndex

在您的索引 View 中调用 Kendo UI Treeview 助手

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

为kendo Treeview 创建一个 View 模型 KendoTreeViewViewModel:

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

在您的读取操作中返回包含文件和文件夹的 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);
}

关于c# - 如何将 Kendo Treeview 绑定(bind)到文件目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28482461/

相关文章:

c# - Azure DevOps 未在发布配置中构建

c# - DDD 使用事件或服务?

kendo-ui - Kendo UI Grid,可编辑模式不适用于本地数据

angularjs - 在 Angular JS 框架中从 Kendo Treeview 中检索所选项目的最佳方法

C# 动态类型初始化器

javascript - 未捕获的语法错误 : Unexpected number in kendo ui grid

javascript - 最近 12 个月的 Javascript

kendo-ui - 使用模板自定义 Kendo Treeview 的问题

javascript - 展开或折叠节点 Kendo Treeview 后调用的事件

c# - 库/功能告诉用户他们的密码有多安全?