У меня есть зло, пытающееся заставить работать мой элемент управления GridView. У меня есть код ниже, который успешно отображает все файлы в каталоге. Однако мне нужны два изменения, с которыми я борюсь:
a) В настоящее время URL, который вы получаете при нажатии на поле URL,
http://localhost/LBSExplorer/SharedUser.csv (т.е. мой домашний каталог с именем файла).
Мне требуется, чтобы «Отображаемый текст» был только именем файла, а URL - моим желаемым текстом, за которым следует имя файла, например:
http://mystuff/page.aspx?FileID=SharedUser.csv
б) Я хочу видеть только файлы, которые начинаются с определенного префикса, например, «Оплатить». Я могу сделать это с чем-то вроде:
string [] filelist = Directory.GetFiles ((@ "C: \ MF \ Data \", "Pay *. *");
но это не нравится связывать с моим Gridview!
Буду признателен за вашу помощь!
Mark
const string DocumentFolderPhysicalPath = (@"C:\MF\Data\");
const string DocumentFolderUrl = (@"C:\MF\Data\"); //"http://localhost/virtualfoldernameyouexposed/"; ; // now it is hardcoded but you could retreive it automatically
HyperLinkField hyperLinkField = new HyperLinkField();
hyperLinkField.DataTextField = "Name";
hyperLinkField.DataNavigateUrlFields = new string[] { "Name" };
//Would like this to work!
//HyperLinkField hyperLinkField2 = new HyperLinkField();
//hyperLinkField2.DataTextField = "Destination";
//hyperLinkField2.DataNavigateUrlFields = new string[] { (@"C:\MF\Data\") + "Name" };
GridView1.DataSource = GetDocuments(DocumentFolderPhysicalPath);
GridView1.Columns.Add(hyperLinkField);
GridView1.DataBind();
private System.IO.FileInfo[] GetDocuments(string physicalPath)
{
System.IO.DirectoryInfo directory =
new System.IO.DirectoryInfo(physicalPath);
if (directory.Exists)
{
return directory.GetFiles();
}
else
{
throw new System.IO.DirectoryNotFoundException(physicalPath);
}
}