Solved

Display a list of files from a directory in a datagridview

Posted on 2008-10-27
5
1,731 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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

Webinar: Aligning, Automating, Winning

Join Dan Russo, Senior Manager of Operations Intelligence, for an in-depth discussion on how Dealertrack, leading provider of integrated digital solutions for the automotive industry, transformed their DevOps processes to increase collaboration and move with greater velocity.

Question has a verified solution.

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

For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

749 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