У меня есть следующий GridView
который отображает кнопку " File Name
и " Download
кнопку " View in Browser
:
<asp:GridView ID="GridView1" ClientIDMode="Static" runat="server" AutoGenerateColumns="false" EmptyDataText = "No PDF was generated">
<Columns>
<asp:BoundField DataField="Text" HeaderText="File Name" />
<asp:BoundField DataField="Text" HeaderText="File Date" />
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkDownload" Text="Download" runat="server" CommandArgument='<%# Container.DataItemIndex %>' OnClick="DownloadFile" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkView" Text="View in Browser" CommandArgument='<%# Container.DataItemIndex %>' OnClientClick="window.document.forms[0].target='blank';" runat="server" OnClick="ViewFile" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Я изменяю имя File Name
из С#, используя это:
files.Add(new ListItem(Path.GetFileName(filePath), filePath));
Я хочу, чтобы добавить дату изменения File Date
столбец File Date
для каждого файла, поэтому я попытался использовать следующую строку:
files.Add(new ListItem(File.GetLastWriteTimeUtc(Path.GetFileName(filePath)).toString(), filePath));
Но это добавляет еще одну строку под каждым именем файла, а также отображает неверную дату.
Вот скриншот:
Как я могу исправить свой код, чтобы каждый столбец file name
соответствовал дате изменения file date
столбце file date
?
Полный код:
if (!Page.IsPostBack)
{
try
{
string[] filePaths = Directory.GetFiles(@"C:\PDFGenerate");
List<ListItem> files = new List<ListItem>();
foreach (string filePath in filePaths)
{
files.Add(new ListItem(Path.GetFileName(filePath), filePath));
files.Add(new ListItem(File.GetLastWriteTime(Path.GetFileName(filePath)).ToString(), filePath));
}
GridView1.DataSource = files;
GridView1.DataBind();
}
catch (Exception ce)
{
}
//MessageBox.Show(files.Count() + ""); // displays the count for the files being displayed
}
Возможно, это может сработать:
Измените asp:BoundField
для asp:BoundField
"Дата файла":
<asp:BoundField DataField="Value" HeaderText="File Date" />
И ваш foreach
на что-то вроде этого:
foreach (string filePath in filePaths)
{
files.Add(new ListItem(Path.GetFileName(filePath), File.GetLastWriteTime(Path.GetFileName(filePath)).ToString()));
}
ListItem
имеет ListItem
"Текст" и "Значение", которые, как мне кажется, сопоставляются с вами asp:BoundField
DataField
. Затем в foreach
просто добавьте 1 запись на файл и заполните поля "Текст" и "Значение" соответственно.
GetLastWriteTime
. Я вижу следующее: 12/31/1600 7:00:00 PM
для всех
files
переменная? Это источник данных? Не могли бы вы добавить это к вашему вопросу?