Я работаю над kendo и .net mvc3. Моя проблема в том, что когда я нажимаю кнопку «Развернуть», отображается только развернутый элемент, но я хочу, чтобы он выглядел как папка иерархии:
до того, как была нажата родительская папка
когда я нажимаю кнопку "развернуть"
Вот мой код:
function OnSelectTree(Id) {
var treeview = $("#PathTreeView").data("kendoTreeView").dataItem(Id.node);
var treeview2 = $("#PathTreeView").data("kendoTreeView");
console.info(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);
}
спасибо, извини за мой плохой английский
(моя репутация слишком низкая, чтобы комментировать :(). Проблема прямо сейчас (я думаю) в том, что вы заменяете весь источник данных только поддеревом, а не добавляете его к текущему источнику данных?
Я также считаю, что вы столкнетесь с проблемой, если кто-то изменит каталоги / файлы, пока кто-то расширяется (потому что вы используете числовой счетчик, чтобы указать, где развернуть?
Пожалуйста, проверьте Telerik демо, и я не люблю указывать путь к контроллеру, но я думаю, что это самый простой способ сделать это, чтобы гарантировать, что структура файла не изменилась ...
Вы пробовали демонстрационный код, предоставленный kendo ui, для создания своего treeView? Кажется, у вас там довольно обычное дерево, так что попробуйте.