asp.net(C#)读取文件夹和子文件夹下所有文件,绑定到GRIDVIEW并排序 .
Asp部分:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MyFiles_List.aspx.cs" Inherits="lbWeb.webAdmin.MyFiles_List" %>
<!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>无标题页</title>
<script language="javascript" type="text/javascript">
function selectAll(obj) {
var theTable = obj.parentElement.parentElement.parentElement;
var i;
var j = obj.parentElement.cellIndex;
for(i=0;i<theTable.rows.length;i++)
{
var objCheckBox = theTable.rows[i].cells[j].firstChild;
if(objCheckBox.checked!=null)objCheckBox.checked = obj.checked;
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<table width="100%">
<tr>
<td>
文件管理
</td>
</tr>
<tr>
<td>
<asp:GridView Width="100%" runat="server" ID="gridFileList"
AutoGenerateColumns="false" CellPadding="4" ForeColor="#333333"
GridLines="None" OnRowDataBound="gridFileList_RowDataBound" AllowPaging="True"
PageSize="6" OnPageIndexChanging="gridFileList_PageIndexChanging"
AllowSorting="True" onsorting="gridFileList_Sorting" >
<Columns>
<asp:TemplateField>
<ItemStyle HorizontalAlign="Center" />
<HeaderTemplate> <input id="CheckAll" type="checkbox" οnclick="selectAll(this);" />全选</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkDel" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="序号" InsertVisible="False">
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# this.gridFileList.PageIndex * this.gridFileList.PageSize + this.gridFileList.Rows.Count + 1%>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="图片" InsertVisible="False">
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:Image ID="ImgPath" runat="server" Width="150" Height="80" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="FileName" HeaderText="名称" SortExpression="FileName" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="FileLength" HeaderText="大小" SortExpression="FileLength" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="FilePath" ShowHeader="false">
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="FileLastWriteTime" HeaderText="修改时间" SortExpression="FileLastWriteTime" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
</Columns>
</asp:GridView>
</td>
</tr>
<tr>
<td align="center" class="sub_bg">
<asp:Button runat="server" ID="btnAdd" Text="添 加" OnClick="btnAdd_Click" />
<asp:Button runat="server" ID="btnDel" Text="删 除" OnClick="btnDel_Click" OnClientClick="return confirm('提示:确定要删除吗?');" />
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
CS部分:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.IO;
using System.Text;
namespace lbWeb.webAdmin
{
public partial class MyFiles_List : System.Web.UI.Page
{
protected string File_List="";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//设定初始排序字段为文件修改时间FileLastWriteTime
gridFileList.Attributes.Add("SortExpression", "FileLastWriteTime");
gridFileList.Attributes.Add("SortDirection", "DESC");
BindGrid();
}
}
///<summary>
///要显示的文件扩展名
///</summary>
///<param name="type"></param>
///<returns></returns>
public bool checkFileType(string type)
{
bool FileType = false;
string[] type_ = new string[4];
type = type.ToLower();
type_[0] = ".jpg";
type_[1] = ".gif";
type_[2] = ".jpeg";
type_[3] = ".png";
//可在此添加上传文件的后缀名
for (int i = 0; i < type_.Length; i++)
{
if (type.Contains(type_[i].ToString()))
{
FileType = true;
}
}
return FileType;
}
///<summary>
///遍文件夹下的所有子文件夹下的文件
///</summary>
///<param name="ObjDirPath">文件夹</param>
public void GetFiles(string ObjDirPath)
{
DirectoryInfo SourceDir = new DirectoryInfo(ObjDirPath);
foreach (FileSystemInfo FSI in SourceDir.GetFileSystemInfos())
{
if (FSI is DirectoryInfo)
{
//如果是文件夹则递归
GetFiles(FSI.FullName);
}
else
{
//如果是符合要求的文件则垒加集合,因为我只要求显示图片文件,在checkFileType方法里定义要显示文件的扩展名
if (checkFileType(FSI.Extension))
{
//由于是物理路径,如e:/luobing_web/uploadfiles/picture/test.jpg这种形式,需要提取虚拟路径,如:../uploadfiles/picture/test.jpg
string FilePath = ""; //一步写来看起混乱,就分开写了
FilePath = FSI.FullName.ToLower();
FilePath = FilePath.Substring(FilePath.LastIndexOf("uploadfiles//"));
FilePath = "../"+FilePath.Replace("//", "/");//这里在路径前加了../,因为我的项目里页面文件和上传文件夹不是同级文件夹
File_List += FilePath + ",";
}
}
}
}
///<summary>
///构造DataTABLE来绑定GRIDVIEW
///</summary>
///<returns></returns>
public DataTable FileDataTable()
{
GetFiles(Server.MapPath(@"~/UploadFiles/"));
//构造DataTABLE
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("FilePath", typeof(string)));
dt.Columns.Add(new DataColumn("FileName", typeof(string)));
dt.Columns.Add(new DataColumn("FileLength", typeof(string)));
dt.Columns.Add(new DataColumn("FileLastWriteTime", typeof(string)));
DataRow dr;
//将文件数组集合切割到数组
string[] dtaArry = File_List.Split(',');
for (int i = 0; i < dtaArry.Length; i++)
{
if (dtaArry[i].Trim() != "")//防空元素
{
dr = dt.NewRow();
dr[0] = dtaArry[i];//文件路径
dr[1] = Path.GetFileName(dtaArry[i]);//文件名
//获取文件大小
FileInfo FI = new FileInfo(Server.MapPath(@dtaArry[i]));
dr[2] = Convert.ToString(FI.Length / 1000)+"KB";//获取的是字节byte,还需要转换为千字节KB
dr[3] = FI.LastWriteTime;
dt.Rows.Add(dr);
}
}
return dt;
}
///<summary>
///绑定gridview
///</summary>
private void BindGrid()
{
//获取数据源
DataTable dtb = FileDataTable();
//排序
string SortDirection = gridFileList.Attributes["SortDirection"].ToString();
string SortExpression = gridFileList.Attributes["SortExpression"].ToString();
dtb.DefaultView.Sort = string.Format("{0} {1}", SortExpression, SortDirection);
//赋数据源并绑定
gridFileList.DataSource = dtb;
gridFileList.DataBind();
}
///<summary>
///添加
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protected void btnAdd_Click(object sender, EventArgs e)
{
Response.Redirect("MyFiles_Add.aspx");
}
///<summary>
///删除
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protected void btnDel_Click(object sender, EventArgs e)
{
try
{
FileInfo fileinfo;
bool IsSelect = false;
for (int i = 0; i < gridFileList.Rows.Count; i++)
{
GridViewRow row = gridFileList.Rows[i];
if (((CheckBox)row.FindControl("chkDel")).Checked)
{
IsSelect = true;
Image Img = (Image)gridFileList.Rows[i].Cells[0].FindControl("ImgPath");
fileinfo = new FileInfo(Request.MapPath(@Img.ImageUrl));
if (fileinfo.Exists)
{
fileinfo.Delete();
}
}
}
if (IsSelect)
{
ValueChecked.MessageBox(Page, "删除成功!");
}
else
{
ValueChecked.MessageBox(Page, "请选择要删除的行!");
}
}
catch
{
ValueChecked.MessageBox(Page, "删除失败!");
}
BindGrid();
}
///<summary>
///绑定数据行
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protected void gridFileList_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Image Img = (Image)e.Row.Cells[0].FindControl("ImgPath");
Img.ImageUrl = e.Row.Cells[5].Text;
e.Row.Cells[5].Text="";
}
}
///<summary>
///分页
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protected void gridFileList_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gridFileList.PageIndex = e.NewPageIndex;
this.BindGrid();
}
///<summary>
///排序
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
protected void gridFileList_Sorting(object sender, GridViewSortEventArgs e)
{
string sortExpression = e.SortExpression.ToString();
string sortdirection = "ASC";
if (sortExpression == gridFileList.Attributes["SortExpression"])
{
sortdirection = (gridFileList.Attributes["SortDirection"].ToString() == sortdirection ? "DESC" : "ASC");
}
gridFileList.Attributes["SortExpression"] = sortExpression;
gridFileList.Attributes["SortDirection"] = sortdirection;
this.BindGrid();
}
}
}
转载于:https://www.cnblogs.com/beidao/archive/2012/11/07/2758994.html
asp.net(C#)读取文件夹和子文件夹下所有文件,绑定到GRIDVIEW并排序 .相关推荐
- Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
本文:http://www.cnblogs.com/xudong-bupt/p/3504442.html Linux C 下面读取文件夹要用到结构体struct dirent,在头#include ...
- Linux C 读取文件夹下所有文件(包括子文件夹)
Linux C 读取文件夹下所有文件(包括子文件夹) 递归读取某文件夹及其子文件夹下所有文件名 深入探讨:linux中遍历文件夹下的所有文件 Linux C :遍历输出指定目录下的所有文件 Linux ...
- 复制文件夹下所有文件(包括子文件夹),到一个文件夹
把子目录文件复制到当前目录 读取文件夹下所有文件路经,包括子文件夹下 import PIL.Image as Image import os import shutil def list_folder ...
- 【C++】window下 使用c++遍历文件夹及其子文件夹和文件,并打印文件路径及各文件内容
这两天一直在学习如何使用c++遍历文件夹.读取文件内容和写入文件. 话不多说,直接上代码 /* * 文件功能:递归遍历文件夹,遍历文件夹及其子文件夹和文件.打印文件夹名称.文件名称和文件数目 * * ...
- redhat 复制文件夹及子文件夹_python文件夹怎么操作呢??(建议详读)
当前工作目录 >>> import os >>> os.getcwd() 我电脑上的结果为: 'C:Users我的电脑AppDataLocalProgramsPyt ...
- linux递归赋权限,Linux下递归更改文件夹和子文件夹的权限
为所有Web应用程序设置适当的文件权限都是Web主机的重要组成部分.在本教程中,您将了解如何在单个命令中递归地更改文件夹和子文件夹上的文件权限. 如您所知,在Linux中,所有内容都被视为一个文件.一 ...
- c++利用windows api遍历指定文件夹及其子文件夹中的文件
以下代码在vs2008中测试通过,利用FindFirstFile,FindNextFile函数遍历了我电脑上全路径为"C:\\Users\\v_tianboli\\Desktop\\wind ...
- java ftp遍历所有子文件_Java 遍历指定文件夹及子文件夹下的文件
Java 遍历指定文件夹及子文件夹下的文件 /** * 遍历指定文件夹及子文件夹下的文件 * * @author testcs_dn * @date2014年12月12日下午2:33:49 * @pa ...
- 获取文件夹以及子文件夹里面的所有文件
1. 没有后缀名的限制: string[] filePaths = Directory.GetFiles(@"c:\MyDir\"); 2. 有后缀名: string[] file ...
- java 获取子文件夹_JAVA之File类 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件...
package ioTest.io3; import java.io.File; /* * 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件 . * 并将文件夹和文件名称打印在控制台上面.并且要 ...
最新文章
- 简单粗暴上手TensorFlow 2.0,北大学霸力作,必须人手一册!
- Microbiome:所谓的“富集培养”获得的微生物真的都是被“富集”出来的吗?
- 通过示例学习JavaScript闭包
- python没基础可以学吗-没编程基础可以学python吗
- oracle limsize,查看oracle数据库----size
- linux同步IO: sync、fsync与fdatasync
- 简述WebService与.NET Remoting的区别及适应场合
- 【HDU - 1856】 More is better(并查集)(还需要空间优化。。)
- html window 属性,html中window对象top 、self 、parent 等属性
- 动画学信奥 漫画学算法 CSP-J入门级 (一)、计算机基础与编程环境(依据「NOI大纲」)
- 建筑工程项目管理信息化PM
- vue 过滤器 filter
- 我的装机软件清单-备忘
- mysql5.1事件调度器
- linux使用小命令使用汇集
- Linux网络之DHCP
- 盒马鲜生真的是新零售吗?
- 数组算法之“前缀和”
- 2021-12-29 迈向程序猿的第五十七步
- DataView对象