You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于特定文件名在ASP.NET GridView分类展示文件夹文件的实现求助

解决ASP.NET GridView按文件名分类展示文件的问题

看起来你已经有了初步的代码框架,我来帮你完善这个逻辑,实现按文件名关键词把不同格式的文件分到对应的GridView里。

实现思路

  • 第一步:先获取指定目录下所有符合格式(doc、xls、ppt、pdf)的文件路径
  • 第二步:遍历每个文件,提取文件名,判断是否包含目标关键词(比如SOP_IT、SOP_FAT)
  • 第三步:为每个GridView准备独立的数据源(用List(Of FileInfo)存储文件信息,方便后续绑定显示文件名、大小、时间等)
  • 第四步:将数据源分别绑定到对应的GridView

完整的Page_Load代码(VB.NET)

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        ' 替换成你的文件存储目录路径,比如站点下的Uploads文件夹
        Dim uploadDir As String = Server.MapPath("~/Uploads/")
        ' 定义需要过滤的目标文件格式
        Dim targetExtensions As String() = {".doc", ".xls", ".ppt", ".pdf"}
        
        ' 创建对应关键词的文件列表,作为GridView数据源
        Dim sopItFiles As New List(Of FileInfo)
        Dim sopFatFiles As New List(Of FileInfo)
        ' 如果还有其他分类关键词,继续添加对应的列表即可
        
        ' 获取目录下所有文件
        Dim dirInfo As New DirectoryInfo(uploadDir)
        Dim allFiles As FileInfo() = dirInfo.GetFiles()
        
        ' 遍历文件,按关键词分类
        For Each file As FileInfo In allFiles
            ' 先判断文件格式是否符合要求
            If targetExtensions.Contains(file.Extension.ToLower()) Then
                Dim fileName As String = file.Name.ToLower()
                ' 按文件名关键词分类(不区分大小写)
                If fileName.Contains("sop_it") Then
                    sopItFiles.Add(file)
                ElseIf fileName.Contains("sop_fat") Then
                    sopFatFiles.Add(file)
                End If
                ' 新增分类的话,继续加ElseIf分支
            End If
        Next
        
        ' 绑定数据到各个GridView
        gvSOP_IT.DataSource = sopItFiles
        gvSOP_IT.DataBind()
        
        gvSOP_FAT.DataSource = sopFatFiles
        gvSOP_FAT.DataBind()
    End If
End Sub

前台GridView示例代码

你需要在.aspx页面里定义对应的GridView,这里给你一个包含常用列的示例:

<%-- SOP_IT分类的GridView --%>
<asp:GridView ID="gvSOP_IT" runat="server" AutoGenerateColumns="False" Width="100%" CssClass="table table-bordered">
    <Columns>
        <asp:BoundField DataField="Name" HeaderText="文件名" />
        <asp:BoundField DataField="Length" HeaderText="文件大小(字节)" />
        <asp:BoundField DataField="LastWriteTime" HeaderText="更新时间" DataFormatString="{0:yyyy-MM-dd HH:mm}" />
        <%-- 新增下载链接列 --%>
        <asp:TemplateField HeaderText="操作">
            <ItemTemplate>
                <asp:HyperLink ID="hlDownload" runat="server" 
                    NavigateUrl='<%# "~/Uploads/" + Eval("Name") %>' 
                    Text="下载" Target="_blank" CssClass="btn btn-sm btn-primary"></asp:HyperLink>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

<%-- SOP_FAT分类的GridView --%>
<asp:GridView ID="gvSOP_FAT" runat="server" AutoGenerateColumns="False" Width="100%" CssClass="table table-bordered">
    <Columns>
        <asp:BoundField DataField="Name" HeaderText="文件名" />
        <asp:BoundField DataField="Length" HeaderText="文件大小(字节)" />
        <asp:BoundField DataField="LastWriteTime" HeaderText="更新时间" DataFormatString="{0:yyyy-MM-dd HH:mm}" />
        <asp:TemplateField HeaderText="操作">
            <ItemTemplate>
                <asp:HyperLink ID="hlDownload" runat="server" 
                    NavigateUrl='<%# "~/Uploads/" + Eval("Name") %>' 
                    Text="下载" Target="_blank" CssClass="btn btn-sm btn-primary"></asp:HyperLink>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

注意事项

  • 确保你的文件存储目录(比如~/Uploads/)已经创建,并且ASP.NET应用程序拥有该目录的读写权限
  • 代码里用了ToLower()做不区分大小写的判断,如果需要严格匹配大小写,去掉这个转换即可
  • 如果要新增更多分类,只需要添加对应的文件列表、判断分支,再新增一个GridView就行
  • 文件大小如果想转换成KB/MB更友好的单位,可以在后台处理(比如写个转换方法)或者用前台绑定表达式处理

内容的提问来源于stack exchange,提问作者Joinnes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:46:38