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.