我正在研究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,抱歉我的英语不好
答案 0 :(得分:0)
(我的声誉低至无法评论:()。 现在的问题(我认为)是您要仅用子树替换整个数据源,而不是将其添加到当前数据源?
我还相信,如果有人在扩展时更改目录/文件,则会遇到问题(因为您使用数字计数来告诉要扩展的位置?
请结帐telerik demo,我不喜欢将路径发布到控制器,但是我认为这是确保文件结构没有改变的最简单方法。