2014-06-30 85 views
1

我有以下GridView其中顯示File NameDownload按鈕和View in Browser按鈕:如何將值添加到ASP:BoundField的

<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 
     } 
+0

'文件'變量代表什麼?它是數據源嗎?你能否把它添加到你的問題? – Dethariel

+1

@Dhahariel謝謝你提醒我......我添加了完整的代碼。 – SearchForKnowledge

回答

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:BoundFieldDataField屬性。然後在foreach只需爲每個文件添加1個條目並分別填充「文本」和「值」字段。

+0

謝謝。這就像一個魅力,但我仍然沒有得到'GetLastWriteTime'函數的正確值。我看到以下內容:'12/31/1600 7:00:00 PM'全部爲 – SearchForKnowledge

+0

@SearchForKnowledge這是另一個問題,我認爲 – Dethariel

+1

謝謝。我會打開另一個問題 – SearchForKnowledge