不可否认,我是编程的新手并且一直试图解决这个问题太久了......我需要(通过按钮点击)从特定文件夹中提取所有文件,包括所有子文件夹。我的两个数据表列是" FileName" &安培; "文件路径&#34 ;. FileName应该只显示文件名。 FilePath应该显示整个路径,包括c:任何帮助赞赏!
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 :(得分:0)
我认为你面临的问题是
找不到列
"FileName"
线drawingTableRow["FileName"]
由于您尚未定义表的列名。因此,更改DataTable d
的声明,如下所示将解决问题:
DataTable d = new DataTable();
d.Columns.Add("FileName");
d.Columns.Add("FilePath");
我会建议您填写DataTable的另一个选项,请看下面的代码:
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);
}
答案 1 :(得分:0)
非常感谢SOOO。这些答案(部分)都有助于解决我的问题。 我必须添加其他有同样问题的人....我发现显示我的数据需要一个额外的项目:
dataGridView2.DataSource = d;
诚然,我不完全理解为什么这些代码是必要的,因为我从数据网格视图中绑定了表...但这是我的最后一块拼图。 再次感谢你们!