Gridview привязан к именам файлов в каталоге - PullRequest
0 голосов
/ 09 февраля 2010

У меня есть зло, пытающееся заставить работать мой элемент управления 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);
    }
}

1 Ответ

1 голос
/ 10 февраля 2010

То, что вы ищете, - это свойство DataNavigateUrlFormatString.

hyperLinkField.DataNavigateUrlFormatString = "http://mystuff/page.aspx?FileID={0}";

{0} здесь заменяется значением DataNavigateUrlFields.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...