Как добавить значение в asp: BoundField

1

У меня есть следующий 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));

Но это добавляет еще одну строку под каждым именем файла, а также отображает неверную дату.

Вот скриншот:

Изображение 174551

Как я могу исправить свой код, чтобы каждый столбец 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
        }
  • 0
    Что означает files переменная? Это источник данных? Не могли бы вы добавить это к вашему вопросу?
  • 1
    @Dethariel Спасибо, что напомнили мне ... Я добавил полный код.
Теги:
gridview

1 ответ

2
Лучший ответ

Возможно, это может сработать:

Измените 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 запись на файл и заполните поля "Текст" и "Значение" соответственно.

  • 0
    Спасибо. Это работало как чудо, но я все еще не получаю правильное значение для функции GetLastWriteTime . Я вижу следующее: 12/31/1600 7:00:00 PM для всех
  • 0
    @SearchForKnowledge Это вопрос другого вопроса, я думаю
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню