将文件描述添加到gridview

时间:2014-11-25 10:54:07

标签: c# asp.net gridview

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

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

我似乎无法弄清楚如何在description列中添加值。文件名列值当然来自目录。

请在下面找到我的代码

 <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();

提前感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我相信,创建一个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" />