如何将HyperLinkField添加到GridView数据绑定到文件目录

本文关键字:GridView 文件目录 数据绑定 添加 HyperLinkField | 更新日期: 2023-09-27 18:27:55

我正在尝试向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;
    }

}

如何将HyperLinkField添加到GridView数据绑定到文件目录

与其手动构建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

让我们从那里开始,我们可以根据需要进行调整。