Bind FileSystemContentProvider to database

16 posts, 0 answers
  1. L uke
    L uke avatar
    13 posts
    Member since:
    Jul 2009

    Posted 24 Sep 2009 Link to this post

    I have overloaded methods and succesfully get the folders and files stored in database table. Now I`m trying to implement deleting files, but when delete first executes GetPath function which always crush the control.
    What should it return, when on input I get "/Folder A/File 12", on output I have tried
    null
    string.Empty
    "Folder A/File 12"
    "/Folder A/"
    "/Folder A" - in this case I get message that there are no permissions?
    "/Folder A/File 12/"

    Of course none of this locations exist physically, they reflect data in my table.

  2. Fiko
    Admin
    Fiko avatar
    1406 posts

    Posted 28 Sep 2009 Link to this post

    Hi Luke,

    I believe that this online demo will be of help. For your convenience I have attached the implementation of the Telerik.Web.Examples.DBContentProvider class to this thread.

    I hope this helps.

    Best wishes,
    Fiko
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Luca Fumagalli
    Luca Fumagalli avatar
    7 posts
    Member since:
    Aug 2009

    Posted 15 Oct 2009 Link to this post

    Sorry, I want to use DBContentProvider.cs and DataServer.cs to fill a File Explorer control.

    I need an example how to call this method in the paghe that contains the FileExplorer Control.

    Thanks, Luca.
  5. Fiko
    Admin
    Fiko avatar
    1406 posts

    Posted 21 Oct 2009 Link to this post

    Hi Luca,

    I am not quite sure that I understood your scenario. The provided files in this example are intended to be used to provide content to the RadFileExplorer. You could use them for different purposes, but in this case you need to modify the files to fit your requirements. This task, however, is not related to our controls and it is beyond our support.
    If you have any problems using the RadFileExplorer control with the DBContentProvider, please open a new support ticket and send a working project, including a detailed explanation of the desired behavior. I will check it and do my best to provide a solution.

    Sincerely yours,
    Fiko
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
  6. Gerrit du Preez
    Gerrit du Preez avatar
    35 posts
    Member since:
    Aug 2012

    Posted 18 Feb 2010 Link to this post

    Hi there

    I am using the DBContentProvider to store files in a database.  Everything works nicely.

    I would like to extend the functionality by adding properties to a document, also stored in the same table as the file itself.  In my database, I have e.g. a column for Author and DocumentVersion as well as the column containing the file content and the other columns necessary to store files in a database - MimeType, IsDirectory etc.

    In the FileExplorer, I added a context menu item called "Properties" so, when I have uploaded a document, I can right click on it, click on the added "Properties" ContextMenu item thats open a RadWindow with the path of the specific document in the QueryString and a form where I can add the Author and Document version data.

    This is all working, but now I want to submit the form and update the correct database row with the additional properties submitted in the form.  I assume I can get that by using the path I get from the FileExplorer (selectedItem.get_path() Client Side method) placed in the QueryString of the RadWindow and query the database to find the item that matches it.  It is a bit tricky, for the whole path is not stored with the item itself in the database.

    Question 1:
    What I would like to know is if there is an easier way to get e.g. the ID of the table row (primary key) from the FileExplorer itself.  I get the path, but I would like to get the primary key of the table row the specific document is stored in.  Can this be done and any ideas as to how to do it?

    Question 2:
    Since I store the documents as well as additional properties in a database, is there a way to display these properties in additional grid columns in the FileExplorer itself, e.g. next to each document, the Author or DocumentVersion etc. All of this is part of the same database row and would be easy to  query, the question is, how to display it in the RadGrid that is part of the FileExplorer?

    Your help would be much appreciated.

    Greetings

    Gerrit
  7. Gerrit du Preez
    Gerrit du Preez avatar
    35 posts
    Member since:
    Aug 2012

    Posted 18 Feb 2010 Link to this post

    Hi there

    I managed to get the ID by using the DataServer.cs class.

    Will appreciate it if you can still advise me on Question 2 though.

    Greetings

    Gerrit
  8. Fiko
    Admin
    Fiko avatar
    1406 posts

    Posted 24 Feb 2010 Link to this post

    Hi Gerrit,

    In reference to your question:
    • In the implementation of the DBContentProvider the ID of an item is retrieved by its path. In your case you can change and pass the ID (primary key) of the item when you construct the item instead of passing the full URL.
      FileItem newFileItem = new FileItem(name,
                          Path.GetExtension(name),
                          (int)childRow["Size"],
                          itemFullPath,
                          GetItemUrl(childRow["ItemID"].ToString()),
                          string.Empty,
                          GetPermissions(itemFullPath)
                          );

      Then you can get the ID by calling the get_url() of the FileBrowserItem object on the client. For example in the OnClientFileOpen handler:
      <script type="text/javascript">
          function OnClientFileOpen(oExplorer, args)
          {
              var item = args.get_item();
              alert(item.get_url());
          }
      </script>
    • "...is there a way to display these properties in additional grid columns..."
      I believe that this online demo will be of help.

    I hope this helps.

    Kind regards,
    Fiko
    the Telerik team

    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items.
  9. Gerrit du Preez
    Gerrit du Preez avatar
    35 posts
    Member since:
    Aug 2012

    Posted 02 Mar 2010 Link to this post

    Hi Fiko

    Thanks for the reply. Will check it out.

    Greetings

    Gerrit
  10. Gerrit du Preez
    Gerrit du Preez avatar
    35 posts
    Member since:
    Aug 2012

    Posted 09 Mar 2010 Link to this post

    Hi there

    "...is there a way to display these properties in additional grid columns..."
    I believe that this online demo will be of help.

    I had a look at the demo and got it going when using the file explorer for files stored physical files (as in the demo).  However, I would like to use this functionality while storing the files in a database.

    I have a project where I use the DBContentProvider and there are some additional database fields I would like to show in the grid of the file explorer.  The example you referred to, extract information from the physical files, like date and owner.  In the same way I would like to show data, but in this case, extracted from the database row where the rest of the file information is stored.

    In my project I added a context menu for "Properties", so after uploading a file to the explorer, I can right click on the file and find the "Properties" item in the context menu.  This takes me to a form where I can add additional information like a description, author etc. and when subitted, stored in the same database row as the file content itself.

    I would like this information, e.g. the description, to display in the grid of the file explorer as well.

    Any ideas as to how this can be achieved?

    Thanks

    Gerrit
  11. Lini
    Admin
    Lini avatar
    2144 posts

    Posted 12 Mar 2010 Link to this post

    Hello Gerrit,

    You can add additional columns to the grid as shown in the online demo - more specifically the AddGridColumn method in the code file. To populate the new column with data, you need to modify the ResolveDirectory / ResolveRootDirectoryAsTree methods in your DBContentProvider class and add a new attribute to the FileItem / DirectoryItem objects after you create them. This is shown in the CustomColumnsContentProvider class in the online demo. In your case you already have a custom content provider, so you simply need to add the .Attributes.Add(...) call to the right place and use the data from the DB.

    All the best,
    Lini
    the Telerik team

    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items.
  12. Gerrit du Preez
    Gerrit du Preez avatar
    35 posts
    Member since:
    Aug 2012

    Posted 18 Jun 2010 Link to this post

    Hi there

    I have a RadFileExplorer linked to a database, based on your online example.

    When I delete a folder, only the the selected folder gets deleted, but the child folders and files still remain as entries in the database.

    When using the RadFileExplorer with files and folders in the file system of a server, all the child items gets automatically deleted when a folder is deleted, as expected.  This does not happen when usings a database. I assume some extra code is needed to loop through the child items when deleting a folder when the RadFileExplorer is linked to a database.

    Any advise on this?

    Greetings

    Gerrit 
  13. Lini
    Admin
    Lini avatar
    2144 posts

    Posted 21 Jun 2010 Link to this post

    Hello Gerrit,

    The DB content provider in the example will not cascade delete statements - you can find the code for the delete operation in the DataServer.cs file (/App_Code/Editor/DataServer.cs in the live demos web site):

    (line 153)
    public void DeleteItem(string path)
    ...

    If you have experience with SQL, you can create a Cascading Referential Integrity Constraint on the table where the files and folders are stored and use "ON DELETE CASCADE" for the references clause. I am sure that similar cascading options exist with other RDMBSs as well (e.g. Oracle, MySQL). You can also implement a .NET recursive solution  that selects related rows and deletes them as well.

    Greetings,
    Lini
    the Telerik team
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
  14. Rohan
    Rohan avatar
    94 posts
    Member since:
    Jul 2012

    Posted 09 May 2012 Link to this post

    Hi fiko,

    I want to user Custom file content provider for File Explore . I don't know how to use ,how to implement this i am confusing because i have different table structure that you specified in example . please provide any easy way to implement FileSystemContentProvider.

  15. Dobromir
    Admin
    Dobromir avatar
    1633 posts

    Posted 14 May 2012 Link to this post

    Hi Rohan,

    You can find detailed information regarding the FileBrowserContentProvider class in the following help article:
    Using custom FileBrowserContentProvider

    All the best,
    Dobromir
    the Telerik team
    If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
  16. Prashanth
    Prashanth avatar
    1 posts
    Member since:
    Sep 2013

    Posted 16 Sep 2013 Link to this post

    hi
    I have created a asp.net ajax website by following instructions in www.telerik.com/help/aspnet-ajax/fileexplorer-getting-started.html.
    and i want to know how to save the folder and files into database . i am not able to understand from where he is creating the folders and saving in a path. 
    Can u please help 
  17. Marin Bratanov
    Admin
    Marin Bratanov avatar
    3598 posts

    Posted 18 Sep 2013 Link to this post

    Hello,

    Have you examined the resources my colleagues have linked previously in the thread?
    http://www.telerik.com/help/aspnet-ajax/fileexplorer-custom-filebrowsercontentprovider.html
    http://demos.telerik.com/aspnet-ajax/fileexplorer/examples/server-sideapi/dbfilebrowsercontentprovider/defaultcs.aspx
    They explain how to use custom providers for your files. What the exact file structure is and how it is created depends on the developer and their project, which is why these providers are custom. By default, RadFileExplorer shows files and folders from within the web application, as designated by its ViewPaths, UploadPaths and DeletePahts properties under Configuration. You can see a prime example of such basic configuration in this demo:
    http://demos.telerik.com/aspnet-ajax/fileexplorer/examples/server-sideapi/initialpathandpaging/defaultcs.aspx
    Once you download the demos project you can also examine it locally.
    You may also find useful the RadFileExplorer Code Library section which shown an SQL provider in detail:
    http://www.telerik.com/community/code-library/aspnet-ajax/file-explorer/connect-radfileexplorer-or-radeditor-to-a-sql-databse.aspx


    Regards,
    Marin Bratanov
    Telerik
    If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to the blog feed now.
Back to Top
UI for ASP.NET Ajax is Ready for VS 2017