فرض کنیم می خواهیم اسم ، آدرس ، سایز و تاریخ تغییر و ... از هر فایل و پوشه رو توی یه گرید نشون بدیم
کد:
Private void createtable()
{
DataTable dt=new DataTable();
dt.Clear();
DataColumn fname=new DataColumn("FileName");
dt.Columns.Add(fname);
DataColumn fpath=new DataColumn("FilePath");
dt.Columns.Add(fpath);
DataColumn ftype=new DataColumn("FileType");
dt.Columns.Add(ftype);
DataColumn fsize=new DataColumn("FileSize");
dt.Columns.Add(fsize);
DataColumn fdate=new DataColumn("FileDate");
dt.Columns.Add(fdate);
}
بعدش تو اون توابع ستونهایی رو که میخوای میگیری و پر می کنی
کد:
Private void GetFolderName(string folderpath)
{
Scripting.Folders fold ;
FileSystemObject fso= new FileSystemObjectClass();
fold = fso.GetFolder(folderpath).SubFolders;
foreach(Scripting.Folder subfold in fold)
{
DataRow dr;
dr=dt.NewRow();
dr["FileType"]=folder.Type;
dr["FileDate"]=folder.DateLastModified;
dr["FilePath"]=folder.Path;
dr["FileSize"]=folder.Size;
dr["FileName"]=folder.Name;
dt.Rows.Add(dr);
}
GetFolderName(subfold.Path);
GetFileName(subfold.Path);
}
}
public void GetFileName(string filepath)
{
Scripting.Files files ;
FileSystemObject fso= new FileSystemObjectClass();
files=fso.GetFolder(filepath).Files ;
foreach(Scripting.File file in files)
{
DataRow dr;
dr=dt.NewRow();
dr["FileType"]=file.Type;
dr["FileDate"]=file.DateLastModified;
dr["FilePath"]=file.Path;
dr["FileSize"]=file.Size;
dr["FileName"]=file.Name;
dt.Rows.Add(dr);
}
}
برای استفاده از توابع بالا مثلا توی تابع لود صفحه آدرس رو به تابع اول پاس می کنی
GetFolderName(FolderPath);
و بلافاصله بعد از دستور بالا توی پیج لود دیتاتیبل رو با یه گرید بایند می کنی
dataTable.DataSource= dt;
نکته برای استفاده از تیبل هم می تونی تیبل رو به توابع ارسال کنی و هم اینکه پابلیک تعریفش کنی
برای ساختن پوشه
کد:
private void CreateNewFolder(string NewFolder,string folderpath)
{
string path1;
path1=folderpath ;
FileSystemObject fso= new FileSystemObjectClass();
path1=path1+NewFolder+"\\";
if (fso.FolderExists(path1)!=true)
if(NewFolder!=null)
{
fso.CreateFolder(path1);
}
}
برای حذف فایل یا پوشه
تو این تابع من اسامی فایلها و پوشه ها رو ریخته بودم تو یه دیتالیست و یه چک باکس هم برای هر کدوم گذاشته بودم و کاربر با انتخاب هر کدوم و زدن دکمه حذف تابع زیر اتفاق می افتاد
کد:
private void DelFolder_Click(object sender, System.EventArgs e)
{
FileSystemObject fso=new FileSystemObjectClass();
int itemcount=DataList1.Items.Count;
int i=0;
for(i=0;i< itemcount ;i++)
{
CheckBox check=new CheckBox();
check=(CheckBox) DataList1.Items[i].FindControl("check");
if(check.Checked==true )
{
if(fso.FileExists(DataList1.DataKeys[i].ToString()))
fso.DeleteFile(DataList1.DataKeys[i].ToString(),true);
if(fso.FolderExists(DataList1.DataKeys[i].ToString())==true)
fso.DeleteFolder(DataList1.DataKeys[i].ToString(),true);
}
}
}
نکته آدرس فایل ها یا پوشه ها رو برای دیتالیست به عنوان کلید اصلی تعریف کرده بودم و همونطوری که می بینی توی تابع کلید اصلی آیتم شماره I رو بصورت رشته می گیره