如何向asp:BoundField添加值

时间:2014-06-30 13:02:52

标签: c# asp.net gridview

我有以下GridView,其中显示File NameDownload按钮以及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>

我正在使用以下方法修改C#中的File Name

files.Add(new ListItem(Path.GetFileName(filePath), filePath));

我希望能够将文件修改日期添加到每个文件的File Date列,因此我尝试使用以下行:

files.Add(new ListItem(File.GetLastWriteTimeUtc(Path.GetFileName(filePath)).toString(), filePath));

但是,这会在每个文件名下面添加另一行,并显示错误的日期。

以下是截图:

enter image description here

如何修复我的代码,以便每个file name列对应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
        }

1 个答案:

答案 0 :(得分:2)

也许这可行:

将“文件日期”列的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具有“文字”和“价值”属性,我认为这些属性会映射到您asp:BoundField的{​​{1}}属性。然后在DataField中为每个文件添加1个条目,并分别填充“文本”和“值”字段。