FileSystemProviderBase.GetFiles(FileManagerFolder) Method

Override this method to implement getting a collection of files that are located in the current folder.

Namespace: DevExpress.Web

Assembly: DevExpress.Web.v20.2.dll


public virtual IEnumerable<FileManagerFile> GetFiles(
    FileManagerFolder folder


Name Type Description
folder FileManagerFolder

A FileManagerFolder object that is the folder currently being processed.


Type Description

A collection of FileManagerFile objects.



The GetFiles method is called twice when you switch between folders if you use the File Manager with a custom file system provider. This is caused by a specificity of the ASP.NET life cycle.

If you create a custom file system provider inherited from the FileSystemProviderBase class, you should override the GetFiles method to get a collection of files that are located in the current folder.


using DevExpress.Web.ASPxFileManager;
using System.IO;
public class LinqFileSystemProvider : FileSystemProviderBase {
    const int DbRootItemId = 1;
    DbFileSystemDataContext dataContext;
    Dictionary<int, DbFileSystemItem> folderCache;
    string rootFolderDisplayName;

    public LinqFileSystemProvider(string rootFolder)
        : base(rootFolder) {
        this.dataContext = new DbFileSystemDataContext();

    public DbFileSystemDataContext DataContext { get { return dataContext; } }

    // Used to decrease the number of recursive LINQ to SQL queries made to a database
    public Dictionary<int, DbFileSystemItem> FolderCache { get { return folderCache; } }

    public override string RootFolderDisplayName { get { return rootFolderDisplayName; } }

    public override IEnumerable<FileManagerFile> GetFiles(FileManagerFolder folder) {
        DbFileSystemItem dbFolderItem = FindDbFolderItem(folder);
            from dbItem in DataContext.DbFileSystemItems
            where !dbItem.IsFolder && dbItem.ParentId == dbFolderItem.Id
            select new FileManagerFile(this, folder, dbItem.Name);
    public override IEnumerable<FileManagerFolder> GetFolders(FileManagerFolder parentFolder) {
        DbFileSystemItem dbFolderItem = FindDbFolderItem(parentFolder);
            from dbItem in FolderCache.Values
            where dbItem.IsFolder && dbItem.ParentId == dbFolderItem.Id
            select new FileManagerFolder(this, parentFolder, dbItem.Name);
    public override bool Exists(FileManagerFile file) {
        return FindDbFileItem(file) != null;
    public override bool Exists(FileManagerFolder folder) {
        return FindDbFolderItem(folder) != null;
    public override System.IO.Stream ReadFile(FileManagerFile file) {
        return new MemoryStream(FindDbFileItem(file).Data.ToArray());
    public override DateTime GetLastWriteTime(FileManagerFile file) {
        var dbFileItem = FindDbFileItem(file);
        return dbFileItem.LastWriteTime.GetValueOrDefault(DateTime.Now);

    // File/folder management operations
    public override void CreateFolder(FileManagerFolder parent, string name) {
            dbItem => DataContext.DbFileSystemItems.InsertOnSubmit(new DbFileSystemItem() {
                IsFolder = true,
                LastWriteTime = DateTime.Now,
                Name = name,
                ParentId = dbItem.Id
    public override void DeleteFile(FileManagerFile file) {
        UpdateAndSubmitChanges(file, dbItem =>
    public override void DeleteFolder(FileManagerFolder folder) {
        UpdateAndSubmitChanges(folder, dbItem =>