首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

遍历文件夹及文件后。如何进行分页处理

2013-08-16 
遍历文件夹及文件后。怎么进行分页处理?我现在已经实现了遍历文件夹和遍历文件。不知道怎么进行分页。。在51as

遍历文件夹及文件后。怎么进行分页处理?
我现在已经实现了遍历文件夹和遍历文件。
不知道怎么进行分页。。

在51aspx早上提问。现在都木有人回答

我现在的代码,aspx的 

<form id="myform" runat="server">
    <div class="navigation">
        首页 &gt; 控制面板 &gt; 上传文件管理</div>
    <div class="tools_box">
        <div class="tools_bar">
            <a href="javascript:void(0);" class="tools_btn"><span><b class="all">全选</b></span></a>
            <asp:LinkButton ID="btnDelete" runat="server" CssClass="tools_btn"><span><b class="delete">批量删除</b></span></asp:LinkButton>
        </div>
        <div class="select_box">
            排序方式:<asp:DropDownList ID="ddlSortExpression" runat="server" CssClass="select2" AutoPostBack="True" OnSelectedIndexChanged="ddlSortExpression_SelectedIndexChanged">
                <asp:ListItem Value="FileLastWriteTime" Selected="True">最后修改时间</asp:ListItem>
                <asp:ListItem Value="FileName">文件名称</asp:ListItem>
                <asp:ListItem Value="FileLength">文件大小</asp:ListItem>
            </asp:DropDownList>
            <asp:DropDownList ID="ddlSortDirection" runat="server" CssClass="select2" AutoPostBack="True" OnSelectedIndexChanged="ddlSortDirection_SelectedIndexChanged">
                <asp:ListItem Value="DESC" Selected="True">升序</asp:ListItem>
                <asp:ListItem Value="ASC">降序</asp:ListItem>
            </asp:DropDownList>
        </div>
    </div>
    <asp:Repeater ID="rptList" runat="server">
        <HeaderTemplate>


            <table width="100%" border="0" cellspacing="0" cellpadding="0" class="msgtable">
                <tr>
                    <th width="6%">
                        选择
                    </th>
                    <th align="left">
                        文件名
                    </th>
                    <th align="left">
                        文件所属目录
                    </th>
                    <th width="10%">
                        文件大小
                    </th>
                    <th width="20%">
                        最后修改时间
                    </th>
                </tr>
        </HeaderTemplate>
        <ItemTemplate>
            <tr align="center">
                <td>
                    <asp:CheckBox ID="chkId" CssClass="checkall" runat="server" />


                    <asp:HiddenField ID="hidId" Value='<%#Eval("FilePath")%>' runat="server" />
                </td>
                <td align="left">
                    <a href="<%#Eval("FilePath")%>" target="_blank">
                        <%#Eval("FileName")%></a>
                </td>
                <td align="left">
                    <%#Eval("FileDir")%>
                </td>
                <td>
                    <%#Eval("FileLength")%>
                </td>
                <td>
                    <%#Eval("FileLastWriteTime")%>
                </td>
            </tr>
        </ItemTemplate>
        <FooterTemplate>
            </table>
        </FooterTemplate>
    </asp:Repeater>
    <div class="line15">
    </div>
    <div class="page_box">
        <div id="PageContent" runat="server" class="flickr right">
        </div>
    </div>
    </form>




cs的:
using System;
using System.Text;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using UI;
namespace Web.admin.sys
{
    public partial class Admin_File : BasePage
    {
        protected string File_List = "";
        protected string _RrUrl, _SortExpression, _SortDirection;
        protected void Page_Load(object sender, EventArgs e)
        {
            _SortExpression = Common.Utils.Get("SortExpression");
            _SortDirection = Common.Utils.Get("SortDirection");
            if (!IsPostBack)
            {
                BindGrid();
            }
        }
        ///<summary>
        ///遍文件夹下的所有子文件夹下的文件
        ///</summary>
        ///<param name="ObjDirPath">文件夹</param>
        public void GetFiles(string ObjDirPath)
        {
            DirectoryInfo SourceDir = new DirectoryInfo(ObjDirPath);
            DirectoryInfo[] subDirectories = SourceDir.GetDirectories();//获得目录
            // 遍历目录
            foreach (DirectoryInfo dirinfo in subDirectories)
            {
                if (dirinfo is DirectoryInfo)
                {


                    GetFiles(dirinfo.FullName);
                }
            }
            // 遍历文件
            DirectoryInfo defaultDir = new DirectoryInfo(ObjDirPath);
            FileInfo[] fileInfo = defaultDir.GetFiles();   //目录下的文件
            foreach (FileInfo fInfo in fileInfo)
            {
                string FilePath = "";
                FilePath = fInfo.FullName;
                FilePath = FilePath.Replace("//", "/");//这里在路径前加了../,因为我的项目里页面文件和上传文件夹不是同级文件夹
                File_List += FilePath + ",";
            }
        }
        ///<summary>
        ///构造DataTABLE来绑定GRIDVIEW
        ///</summary>
        ///<returns></returns>
        public DataTable FileDataTable()
        {
            string _FilePathDir = "/UpFile/";
            GetFiles(Server.MapPath(@_FilePathDir));
            //构造DataTABLE
            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("FileDir", typeof(string)));
            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] = "/" + Common.FileHelper.GetUrlConvertor(dtaArry[i]).Replace(Path.GetFileName(dtaArry[i]), "");//文件所属目录
                    dr[1] = "/" + Common.FileHelper.GetUrlConvertor(dtaArry[i]);//文件路径
                    dr[2] = Path.GetFileName(dtaArry[i]);//文件名
                    //获取文件大小
                    FileInfo fInfo = new FileInfo(@dtaArry[i]);
                    dr[3] = Common.FileHelper.ReturnFileSize(fInfo.Length.ToString());//获取的是字节byte,还需要转换为千字节KB
                    dr[4] = Common.TimeHelper.ShowDate(fInfo.LastWriteTime, "", 1);
                    dt.Rows.Add(dr);
                }
            }
            return dt;


        }
        ///<summary>
        ///绑定gridview
        ///</summary>
        private void BindGrid()
        {
            this.ddlSortDirection.SelectedValue = this._SortDirection.ToString();
            this.ddlSortExpression.SelectedValue = this._SortExpression.ToString();
            //获取数据源
            DataTable dtb = FileDataTable();
            //排序
            string SortDirection = this.ddlSortDirection.SelectedValue.ToString();
            string SortExpression = this.ddlSortExpression.SelectedValue.ToString();
            dtb.DefaultView.Sort = string.Format("{0} {1}", SortExpression, SortDirection);
            //赋数据源并绑定
            rptList.DataSource = dtb;
            rptList.DataBind();
        }
        protected void rptList_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
        }
        protected void ddlSortExpression_SelectedIndexChanged(object sender, EventArgs e)
        {
            _RrUrl = Common.Utils.UrlTxt("Admin_File.aspx", "SortExpression={0}&SortDirection={1}", this.ddlSortExpression.SelectedValue.ToString(), this._SortDirection);
            Response.Redirect(_RrUrl);
        }
        protected void ddlSortDirection_SelectedIndexChanged(object sender, EventArgs e)
        {
            _RrUrl = Common.Utils.UrlTxt("Admin_File.aspx", "SortExpression={0}&SortDirection={1}", this._SortExpression.ToString(), this.ddlSortDirection.SelectedValue.ToString());


            Response.Redirect(_RrUrl);
        }
        protected void btnDelete_Click(object sender, EventArgs e)
        {
        }
    }
}

 
[解决办法]
aspnetpager只是提供了一个页码功能而已,实际他并没有实现分页,分页的功能需要自己写(不知道对不对啊,至少我是这样用的)

比如说数据源

List<Object> allList;
List<Object> pageList = allList.Skip(20).Take(10);
[解决办法]
1、数据集先分好页;
2、设置起始页数为1(即首页),然后首页、上一页、下一页分别绑定数据。

大体代码:
CS:
public void databind()
    {
        string connstring = ConfigurationManager.ConnectionStrings["AdventureWorksDWConnectionString"].ConnectionString;
        SqlConnection con = new SqlConnection(connstring);
        SqlConnection conn = new SqlConnection();
        DataSet ds = new DataSet();
        SqlDataAdapter sda = new SqlDataAdapter("select * from Table", con);
        sda.Fill(ds, "name");
        PagedDataSource pds = new PagedDataSource();
        pds.DataSource = ds.Tables["name"].DefaultView;
        pds.AllowPaging = true;//允许分页
        pds.PageSize = 8;//单页显示项数

        int curpage = Convert.ToInt32(num.Text);
        this.BtnDown.Enabled = true;
        this.BtnUp.Enabled = true;
        pds.CurrentPageIndex = curpage - 1;


        if (curpage == 1)
        {
            this.BtnUp.Enabled = false;
        }
        if (curpage == pds.PageCount)
        {
            this.BtnDown.Enabled = false;
        }
        this.Repeater1.DataSource = pds;
        this.Repeater1.DataBind();
    }
protected void BtnUp_Click(object sender, EventArgs e)
    {
        this.num.Text =Convert.ToString ( Convert.ToInt32(num.Text)- 1) ;
        repdatabind();
    }
    protected void BtnDown_Click(object sender, EventArgs e)
    {
        this.num.Text = Convert.ToString(Convert.ToInt32(num.Text)+ 1) ;
        repdatabind();
    }
ASPX:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:Panel ID="Panel1" runat="server" Height="173px">
            <asp:Repeater ID="Repeater1" runat="server"><HeaderTemplate ><table border onmousedown="1" ><tr><td >头</td></tr></HeaderTemplate><ItemTemplate ><tr><td>表格内容:<%# Eval("数据库字段") %></td></tr></ItemTemplate><FooterTemplate ><tr><td>脚</td></tr></table></FooterTemplate>
            </asp:Repeater>
            当前页:<asp:Label ID="num" runat="server"></asp:Label>
            <br />
            <asp:Button ID="BtnUp" runat="server" onclick="BtnUp_Click" Text="上一页" />


            <asp:Button ID="BtnDown" runat="server" onclick="BtnDown_Click" Text="下一页" />
        </asp:Panel>
        <br />
        <br />
    
    </div>
    </form>
</body>
</html>

热点排行