I am trying to get a basic FileManager widget working in our app, but cannot get a remote data bind working correctly.
My Javascript looks like this:
createFileManager: function () { $("#fileManager").kendoFileManager({ dataSource: { schema: kendo.data.schemas.filemanager, transport: { read: { url: "myController/Read/", method: "POST" }, }, change: function (e) { }, error: function (e) { }, }, toolbar: { items: [ { name: "sortDirection" }, { name: "sortField" }, { name: "changeView" }, { name: "spacer" }, { name: "details" }, { name: "search" } ] }, draggable: true, resizable: true, dataBound: onDataBound
});},
And my controller code is thusly:
// borrowed from Kendo service example...public class FileManagerEntry{ public string Name { get; set; } public long Size { get; set; } public string Path { get; set; } public string Extension { get; set; } public bool IsDirectory { get; set; } public bool HasDirectories { get; set; } public DateTime Created { get; set; } public DateTime CreatedUtc { get; set; } public DateTime Modified { get; set; } public DateTime ModifiedUtc { get; set; } public IEnumerable<FileManagerEntry> Directories { get; set; }}// CONTROLLER snippet....public JsonResult Read(string target){ var content = GetContent(); var result = content .Select(f => new { name = f.Name, size = f.Size, path = f.Path, extension = f.Extension, isDirectory = f.IsDirectory, hasDirectories = f.HasDirectories, created = f.Created, createdUtc = f.CreatedUtc, modified = f.Modified, modifiedUtc = f.ModifiedUtc }); return Json(result, JsonRequestBehavior.AllowGet);}// Hardcoded data for testing...private IEnumerable<FileManagerEntry> GetContent(){ return new List<FileManagerEntry> { new FileManagerEntry { Name = "Folder", Size = 0, Path = "folder", Extension = "", IsDirectory = true, HasDirectories = false, CreatedUtc = DateTime.UtcNow, Created = DateTime.Now, ModifiedUtc = DateTime.UtcNow, Modified = DateTime.Now }, new FileManagerEntry { Name = "Image.jpg", Size = 20, Path = "folder/Image.jpg", Extension = ".jpg", IsDirectory = false, HasDirectories = false, CreatedUtc = DateTime.UtcNow, Created = DateTime.Now, ModifiedUtc = DateTime.UtcNow, Modified = DateTime.Now }, new FileManagerEntry { Name = "Image2.jpg", Size = 20, Path = "folder/Image2.jpg", Extension = ".jpg", IsDirectory = false, HasDirectories = false, CreatedUtc = DateTime.UtcNow, Created = DateTime.Now, ModifiedUtc = DateTime.UtcNow, Modified = DateTime.Now } };}
Most of the code, I cobbled together from the Kendo examples for FileManager.
When I run my app.... The FileManager renders & the FileManager dataBound event fires. But the three objects in the manager are all undefined. I jave attached screengrabs of the filemanager.datasource and also the file "details" as shown by FileManager.
i do not know why the data isn't binding appropriately. Is this a problem with the results coming from my controller?
Appreciate any help.
