2012-03-09 47 views
0

我有以下简单的页面;从LINQ数据集(GetFiles)到ListView的值?

<%@ Import namespace="System.IO" %> 

<script runat="server"> 
    int pageSize = 10; 
    int pageNum = 1; 

    protected override void OnInit(EventArgs e) 
    { 
     var currentPage = Directory.GetFiles(@"C:\mypath", "*.pdf").Skip((pageNum - 1) * pageSize).Take(pageSize).OrderBy(c => c).ToArray(); 
     Listview1.DataSource = currentPage; 
     Listview1.DataBind(); 

     base.OnInit(e); 
    } 

</script> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Test project</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <asp:ListView ID="Listview1" runat="server"> 
     <LayoutTemplate> 
      <table cellpadding="0" cellspacing="0"> 
       <tr> 
        <td>Titel</td> 
        <td>Size</td> 
       </tr> 
       <asp:PlaceHolder runat="server" ID="itemPlaceholder"></asp:PlaceHolder> 
      </table> 
     </LayoutTemplate> 
     <ItemTemplate> 
      <tr> 
       <td><a href=''><%#Eval("Name") %></a></td> 
       <td>0 kb</td> 
      </tr> 
     </ItemTemplate> 
    </asp:ListView> 
    </form> 
</body> 
</html> 

如何获取文件名,大小,路径等到我的列表视图。如果我只是有一个简单的每个直接在GetFiles的,我可以做类似

FileInfo f = new FileInfo(pdfFile); 
long pdfSize = f.Length; 
Response.Write(Path.GetFileName(pdfFile) + " - " + pdfSize.ToString() + "<br/>"); 

但我如何实现这一目标,我的ListView?

+0

我发现也许这可能导致我在正确的方向'<%#Path.GetFileNameWithoutExtension(Eval(“Name”)。ToString())%>'。但我仍然收到“DataBinding:'System.String'不包含名称为'Name'的属性。” 不知道还有什么我可以使用除“名称”? – brother 2012-03-09 22:24:40

回答

2

您选择的路径中的文件而不是文件本身。因此,你不能得到FileInfo的性质是什么引发你的异常‘的DataBinding:‘System.String’不包含与名称的属性‘名称’’

这应该工作:

var currentPage = Directory.GetFiles(@"C:\mypath", "*.pdf").Skip((pageNum - 1) * pageSize).Take(pageSize).OrderBy(c => c).ToArray(); 
     .Skip((pageNum - 1) * pageSize) 
     .Take(pageSize) 
     .OrderBy(c => c) 
     .Select(path => new System.IO.FileInfo(path)).ToArray(); 
+0

工作 - thx! :-) – brother 2012-03-09 23:25:02