簡體   English   中英

如何將HyperLinkField添加到GridView數據綁定到文件目錄中?

[英]How can I add a HyperLinkField to GridView databound to a file directory?

我試圖將超鏈接字段列添加到從服務器上文件目錄中提取文件名的GridView中。 我正在使用下面的代碼,但無法正常工作。 它顯示路徑和文件名,但不是可單擊的超鏈接字段。 我不確定自己在做什么錯,有人可以幫我嗎?

public void GetFilesAndFolders()
    {
        using (IREPEntities dbContext = new IREPEntities())
        {

            String vcharTempFileLocation = (from a in dbContext.tbl_ApplicationSetting
                                            where a.vcharKey == "vcharTempFileLocation"
                                            select a).Single().vcharValue;

            DataTable gridviewSource = DisplayFilesInGridView();
            DataRow gridviewRow;

            //Get All Folders Or Directories and add in table  
            DirectoryInfo directory = new DirectoryInfo(vcharTempFileLocation);
            DirectoryInfo[] subDirectories = directory.GetDirectories();

            foreach (DirectoryInfo dirInfo in subDirectories)
            {
                gridviewRow = gridviewSource.NewRow();
                gridviewRow["Claim"] = ddlClaimNumber.SelectedItem;
                gridviewRow["Name"] = dirInfo.Name;
                dynamic newlink = new HyperLinkField();

                newlink = vcharTempFileLocation + dirInfo.Name;

                gridviewRow["link"] = newlink;
                gridviewRow["Application"] = chkApplicationType.SelectedItem;

                gridviewSource.Rows.Add(gridviewRow);
            }




            //Get files in all directories  

            FileInfo[] files = directory.GetFiles("*.*", SearchOption.AllDirectories);
            foreach (FileInfo fileInfo in files)
            {
                gridviewRow = gridviewSource.NewRow();
                gridviewRow["Claim"] = ddlClaimNumber.SelectedItem;
                gridviewRow["Name"] = fileInfo.Name;
                dynamic newlink = new HyperLinkField();

                newlink = vcharTempFileLocation + fileInfo.Name;

                gridviewRow["link"] = newlink;
                gridviewRow["Application"] = chkApplicationType.SelectedItem;                                   

                gridviewSource.Rows.Add(gridviewRow);
            }                        


            gvBatchDetails.DataSource = gridviewSource;
            gvBatchDetails.DataBind();

        }

    }
    private DataTable DisplayFilesInGridView()
    {
        DataTable dtgridviewSource = new DataTable();
        dtgridviewSource.Columns.Add(new DataColumn("Claim", typeof(System.String)));
        dtgridviewSource.Columns.Add(new DataColumn("Name", typeof(System.String)));
        dtgridviewSource.Columns.Add(new DataColumn("Application", typeof(System.String)));
        dtgridviewSource.Columns.Add(new DataColumn("link", typeof(System.String)));

        return dtgridviewSource;
    }


}

無需手動構建GridView,而是創建可以綁定到的數據源。

首先創建一個自定義類來保存詳細信息:

public class FileOrFolderDetail
{
    public string Claim{get;set;}
    public string Name{get;set;}
    public string Link{get;set'}
    public string Application{get;set;}
}

接下來,創建新課程的List

var fileOrFolderDetails = new List<FileOrFolderDetail>();

那時,像執行操作一樣經歷兩個循環,但是創建新的FileOrFolderDetail對象並將它們添加到List

最后,將GridView綁定到fileOrFolderDetails ,並在ASPX中設置HyperLinkField以將Link用作DataNavigateUrl

讓我們從這里開始,我們可以根據需要進行調整。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM