我在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();
提前感谢您的帮助
答案 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" />