• 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>&nbsp;<input id="CheckAll" type="checkbox" onclick="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" />&nbsp;

                <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();

            }

        }

    }

  • 相关阅读:
    C# 递归查找树状目录
    C#递归计算树形菜单
    使用StringBuilder写XML遭遇UTF-16问题
    Error: 'The service did not respond in a timely fashion'
    no suitable method found to override
    Could not load file or assembly "win32_x86dotnet1crdb_adoplus.dll' or one of its dependencies.
    Unable to find the requested .Net Framework Data Provider
    Call JMS Web Service
    Remove Mapping
    卸载windows服务
  • 原文地址:https://www.cnblogs.com/beidao/p/2758994.html
Copyright © 2020-2023  润新知