【问题标题】:DirectoryInfo GetFiles() filter gridDirectoryInfo GetFiles() 过滤器网格
【发布时间】:2013-03-18 14:03:45
【问题描述】:

我正在处理一个页面,该页面在网格中显示特定目录中的 pdf 文件,以及该文件的链接。

我在这里修改 Scott Mitchell 的示例:http://aspnet.4guysfromrolla.com/articles/052803-1.aspx

我将代码从 vb 转换为 c#。

<%@ Import Namespace="System.IO" %>
<script language="C#" runat="server">
public void Page_Load(object sender, EventArgs e)
{
DirectoryInfo dirInfo = new DirectoryInfo(Server.MapPath(""));

articleList.DataSource = dirInfo.GetFiles("*.pdf");
articleList.DataBind();
}
</script>

<asp:DataGrid runat="server" id="articleList" Font-Name="Verdana"
AutoGenerateColumns="False" AlternatingItemStyle-BackColor="#eeeeee"
HeaderStyle-BackColor="Navy" HeaderStyle-ForeColor="White"
HeaderStyle-Font-Size="15pt" HeaderStyle-Font-Bold="True">
<Columns>
<asp:HyperLinkColumn DataNavigateUrlField="Name" DataTextField="Name" 
       HeaderText="File Name" target="_blank"/>
<asp:BoundColumn DataField="LastWriteTime" HeaderText="Last Write Time"
    ItemStyle-HorizontalAlign="Center" DataFormatString="{0:d}" />
</Columns>
</asp:DataGrid>

以上代码用于显示文件。我现在想做的是添加网格过滤。

文件名在网格中显示为 pdf 的链接。如何添加一个文本字段,让您过滤/搜索特定文件名或以 __ 开头的文件名?

另外,是否有可能阻止浏览器缓存 pdf,因为我的页面所做的只是提供指向它的链接?

任何帮助或想法将不胜感激。

谢谢。

【问题讨论】:

    标签: c# asp.net datagrid directoryinfo getfiles


    【解决方案1】:

    试试像下面它会帮助你....

    在 HTML 设计视图中,在 DataGridView 之前添加下面的代码,它将创建文本框和按钮

    HTML:

        Enter the Name of the file : <asp:TextBox ID="txtFilter" runat="server"></asp:TextBox>
            <asp:Button ID="btnShow"
                runat="server" Text="ShowData" onclick="btnShow_Click" />
    

    添加按钮单击事件,如下所示...

    CS:

            protected void btnShow_Click(object sender, EventArgs e)
            {
             ShowData();
            }
    
            public void ShowData()
            {
                string FilterValue = txtFilter.Text.ToUpper();
                DirectoryInfo dirInfo = new DirectoryInfo(Server.MapPath(""));
    
                FileInfo[] info = dirInfo.GetFiles("*.zip");            //Get FileInfo and Save it a FileInfo[] Array
    
                List<Getfiles> _items = new List<Getfiles>();          // Define a List with Two coloums
    
                foreach (FileInfo file in info) //Loop the FileInfo[] Array
                   _items.Add(new Getfiles { Name = file.Name, LastWriteTime = file.LastWriteTime.ToString("MM/dd/yyyy") });  // Save the Name and LastwriteTime to List
    
    
               //you can use Any one the Filtered list from the below...
    
                var tlistFiltered = _items.Where(item => item.Name.ToUpper() == FilterValue); // Find the File by their File Name
                var tlistFiltered1 = _items.Where(item => item.Name.ToUpper().Contains(FilterValue)); // Find the file that Contains Specific word in its File Name
                var tlistFiltered2 = _items.Where(item => item.Name.ToUpper().StartsWith(FilterValue));// Find tha File that StartsWith Some Specific Word
    
    
                articleList.DataSource = tlistFiltered; //Assign the DataSource to DataGrid
                articleList.DataBind();
    
            }
    
            public class Getfiles
            {
                public string Name { get; set; }
                public string LastWriteTime { get; set; }
            }
    

    输出屏幕:

    【讨论】:

    • 这有帮助。过滤器有效,但如何使用输入文本字段进行过滤?感谢您的示例代码。很有帮助。
    • 我想我错过了一些东西。通过您推荐的更改,页面不使用文本框输入,而是使用来自var tlistFiltered1 = _items.Where(item =&gt; item.Name.Contains("FilterValue"));FilterValue 如何从文本框中定义FilterValue
    • @Jack:对不起,添加行字符串FilterValue = txtFilter.Text;并删除双引号,并尝试相同...现在我编辑了我的代码....
    • 做到了。感谢您的帮助。
    • 我还有一个问题需要您帮助解决。如何将文件放在子目录中?当我像这样添加/files 时:Server.MapPath(/files) 网格显示位于/files 中的文件名,如下所示:RootFolder/files/aPDF.pdf,但链接指向根文件夹Rootfolder/aPDF.pdf。有什么想法吗?
    【解决方案2】:

    您可以尝试使用 ObjectDataSource,然后将其传递给您的 DataGrid。对象数据源将包装目录信息调用。

    一旦拥有 ObjectDataSource,您应该能够使用 DataGrid 的内置过滤和排序功能。

    Scott Mitchel 对此有一些教程:

    http://msdn.microsoft.com/en-us/library/aa581784.aspx

    这是使用 Sql 的一个,但您应该能够轻松地对其进行调整以提取文件列表:

    http://asp-net-example.blogspot.nl/2008/11/aspnet-gridview-and-objectdatasource.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      • 2020-08-05
      相关资源
      最近更新 更多