将文件说明添加到网格视图

本文关键字:网格 视图 添加 文件 说明 | 更新日期: 2023-09-27 18:32:03

我在 ASP.NET 中有一个GridView,它显示某些文件,用户可以根据自己的角色下载。我已经设法从目录中填充而没有问题。但是我的问题是我需要为每个文件添加一个描述列,即

测试.pdf会有一些描述Test2.pdf将有另一个描述,依此类推

我似乎无法弄清楚如何为描述列增加价值。文件名列值当然来自目录。

请在下面找到我的代码

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
    <asp:BoundField DataField="Text" HeaderText="File Name" />
    <asp:BoundField HeaderText="Description" />
    <asp:TemplateField HeaderText="View Details">
        <ItemTemplate>
            <asp:LinkButton ID="lnkDownload" Text="Download" CommandArgument='<%# Eval("Value") %>' runat="server" OnClick="DownloadFile"></asp:LinkButton>
        </ItemTemplate>
    </asp:TemplateField>
</Columns>

后端 C# 代码是

string[] filePaths = Directory.GetFiles(Server.MapPath("~/document/"));
            List<ListItem> files = new List<ListItem>();
            foreach (string filePath in filePaths)
            {
                files.Add(new ListItem(Path.GetFileName(filePath), filePath));
                // How can I add the description name for each file
            }
            GridView1.DataSource = files;
            GridView1.DataBind();

提前感谢您的帮助

将文件说明添加到网格视图

我相信

,创建一个Class来表示要显示的数据将是最好的。

public class FileDetails
{
    public string FileName { get; set; }
    public string FileDescription { get; set; }
}

现在,您将创建上述类的List

string[] filePaths = Directory.GetFiles(Server.MapPath("~/document/"));
List<FileDetails> files = new List<FileDetails>();
foreach (string filePath in filePaths)
{
 //Line 1
 string filename = Path.GetFileName(filePath); 
 // Line 2
 files.Add(new FileDetails() { FileName = filename, 
                             FileDescription = filename+"This is a test file" });
}
GridView1.DataSource = files;
GridView1.DataBind();

您绝对可以使用不同的方法来填充第 2 行FileDescription上面的字段。

ASPX 代码将类似于以下内容:

<asp:BoundField DataField="FileName" HeaderText="File Name" />
<asp:BoundField DataField="FileDescription " HeaderText="File Description" />