Solved

Display a list of files from a directory in a datagridview

Posted on 2008-10-27
5
1,686 Views
Last Modified: 2012-06-27
Hello,

I am trying to display all the files in a network share folder which are of type: .doc .xls .pdf
The code im trying to use is pasted in the code snippet box. But it is adapted from this:


       Dim dt As New DataTable  
        dt.Columns.Add("File Name")  
        dt.Columns.Add("File Path")  
 
        'Harvest the file paths  
        Dim files As New List(Of String)  
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "*.jpg", IO.SearchOption.AllDirectories))  
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "*.gif", IO.SearchOption.AllDirectories))  
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "*.png", IO.SearchOption.AllDirectories))  
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "*.bmp", IO.SearchOption.AllDirectories))  
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "*.tif", IO.SearchOption.AllDirectories))  
 
        'Load the temp table  
        For Each file As String In files  
            dt.Rows.Add(New Object() {System.IO.Path.GetFileName(file), file})  
        Next  
 
        'Bind to the result  
        Me.BindingSource1.DataSource = dt  

'Setup the temp table   
        Dim dt As New DataTable
        dt.Columns.Add("File Name")
        dt.Columns.Add("File Path")
 
        'Harvest the file paths   
        Dim files As New List(Of String)
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath("\\MYFINSERV\MY_OFFICE\CLIENTS\HISTORY"), "*.doc", IO.SearchOption.AllDirectories))
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath("\\MYFINSERV\MY_OFFICE\CLIENTS\HISTORY"), "*.docx", IO.SearchOption.AllDirectories))
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath("\\MYFINSERV\MY_OFFICE\CLIENTS\HISTORY"), "*.pdf", IO.SearchOption.AllDirectories))
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath("\\MYFINSERV\MY_OFFICE\CLIENTS\HISTORY"), "*.xls", IO.SearchOption.AllDirectories))
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath("\\MYFINSERV\MY_OFFICE\CLIENTS\HISTORY"), "*.ico", IO.SearchOption.AllDirectories))
        files.AddRange(System.IO.Directory.GetFiles(System.Environment.GetFolderPath("\\MYFINSERV\MY_OFFICE\CLIENTS\HISTORY"), "*.png", IO.SearchOption.AllDirectories))
 
        'Load the temp table   
        For Each file As String In files
            dt.Rows.Add(New Object() {System.IO.Path.GetFileName(file), file})
        Next
 
        'Bind to the result   
        Me.BindingSourceDocs.DataSource = dt
 
        Me.historyDocs.AutoGenerateColumns = True
        Me.historyDocs.DataSource = Me.BindingSourceDocs

Open in new window

0
Comment
Question by:drews1f
  • 3
  • 2
5 Comments
 
LVL 8

Expert Comment

by:jorgesv13
ID: 22815554
Okay, what's your specific problem?
are you getting an error or something?
0
 

Author Comment

by:drews1f
ID: 22815611
yes i was string cannot be transfered into integer or something but ive managed to fix it.
code attached incase anyones wondering :0

Only slight problem i still have is the code will only show the files in that specific dir and not from any dirs beneath it. ie

MY_OFFICE\
                   |  1.JPG

MY_OFFICE\CLIENTS\HISTORY\139187
                                                                |   2.JPG
                                                                |   3.JPG

if the dir was to just MY_OFFICE\ then i would only get 1.JPG and not the other 2 files.
How can i adjust my code to capture the sub dirs?

Many thanks
        Dim dirPath As String
        dirPath = "\\myfinserv\MY_OFFICE\CLIENTS\HISTORY\139187"
        'Setup the temp table   
        Dim dt As New DataTable
        dt.Columns.Add("File Name")
        dt.Columns.Add("File Path")
 
        'Harvest the file paths   
        Dim files As New List(Of String)
        files.AddRange(Directory.GetFiles(dirPath, "*.ico"))
        files.AddRange(Directory.GetFiles(dirPath, "*.png"))
 
 
        'Load the temp table   
        For Each file As String In files
            dt.Rows.Add(New Object() {System.IO.Path.GetFileName(file), System.IO.File.GetCreationTime(file)})
        Next
 
        'Bind to the result   
        Me.BindingSourceDocs.DataSource = dt
 
        Me.historyDocs.AutoGenerateColumns = True
        Me.historyDocs.DataSource = Me.BindingSourceDocs

Open in new window

0
 
LVL 8

Accepted Solution

by:
jorgesv13 earned 500 total points
ID: 22815640
Just add the "AllDirectories" modifier:
 files.AddRange(Directory.GetFiles(dirPath, "*.ico",SearchOption.AllDirectories))
        files.AddRange(Directory.GetFiles(dirPath, "*.png",SearchOption.AllDirectories))

Open in new window

0
 

Author Comment

by:drews1f
ID: 22815654
lol yeh just figured that out!!! duhhhhh!!!! im so new!
thanks a bundle anyway mate :)
hope the code here helps someone cause its taken me 2 hours to get right!!
0
 
LVL 8

Expert Comment

by:jorgesv13
ID: 22815659
But you might want to validate that the file string is indeed a file and not a directory:
For Each file As String In files
if not directory.Exists(file) then
            dt.Rows.Add(New Object() {System.IO.Path.GetFileName(file), System.IO.File.GetCreationTime(file)})
end if
        Next

Open in new window

0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In my previous article (http://www.experts-exchange.com/Programming/Languages/.NET/.NET_Framework_3.x/A_4362-Serialization-in-NET-1.html) we saw the basics of serialization and how types/objects can be serialized to Binary format. In this blog we wi…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…
In an interesting question (https://www.experts-exchange.com/questions/29008360/) here at Experts Exchange, a member asked how to split a single image into multiple images. The primary usage for this is to place many photographs on a flatbed scanner…

860 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question