2016-06-08 23 views
0

不可否認,我是編程新手,一直試圖弄清楚這個問題太久......我需要(通過按鈕單擊)從特定文件夾中提取所有文件,包括所有子文件夾。我的兩個數據表列是「FileName」&「FilePath」。 FileName應該只顯示文件名。 FilePath應該顯示整個路徑,包括c:任何幫助讚賞!在DataTable中列出文件

string Dpath = @"C:\Users\me\Documents\Plot Files"; 
DataTable d = new DataTable(); 
DirectoryInfo DirInfo = new DirectoryInfo(Dpath); 
DataRow drawingTableRow = d.NewRow(); 
foreach (FileInfo fi in DirInfo.GetFiles("*", SearchOption.AllDirectories)) 
{ 
    drawingTableRow = d.NewRow(); 
    drawingTableRow["FileName"] = fi.FullName; 
    drawingTableRow["FilePath"] = fi.Name; 
    d.Rows.Add(drawingTableRow); 
} 
+0

你卡在哪裏? – riteshmeher

+0

你似乎忘了將列添加到數據表中。 'd.Columns.Add( 「文件名」); d.Columns.Add( 「文件路徑」);' –

回答

0

我認爲你所面對的問題是

無法找到列"FileName"在 線drawingTableRow["FileName"]

既然你還沒有定義表格的列名。因此,改變數據表d像下面的聲明將解決這一問題:

DataTable d = new DataTable(); 
d.Columns.Add("FileName"); 
d.Columns.Add("FilePath"); 

我會建議你另一種選擇,填補了數據表,看看到下面的代碼:

DataTable FilesTable = new DataTable(); 
FilesTable.Columns.Add("FileName"); 
FilesTable.Columns.Add("FilePath"); 
DataRow dRow; 
string yourPath = @"your path here"; 
string searchPattern = "*.*"; 
var resultData = Directory.GetFiles(yourPath, searchPattern, SearchOption.AllDirectories) 
       .Select(x => new { FileName = Path.GetFileName(x),FilePath = x }); 

foreach (var item in resultData) 
{ 
    dRow = FilesTable.NewRow(); 
    dRow["FileName"] = item.FileName; 
    dRow["FilePath"] = item.FilePath; 
    FilesTable.Rows.Add(dRow); 
} 
0

謝謝SOOO很多人。這兩個答案(部分)幫助解決了我的問題。 我必須添加其他人有相同的問題....我發現了一個額外的項目是必要的,以顯示我的數據:

dataGridView2.DataSource = d; 

誠然,我不完全理解爲什麼這個代碼段是必要的,因爲我從我的datagridview中綁定表格......但這是我拼圖的最後一部分。 再次感謝你們!