遍历文件夹及文件后。怎么进行分页处理?

ChinaXtHuLang 2013-08-15 04:15:10
我现在已经实现了遍历文件夹和遍历文件。
不知道怎么进行分页。。

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

我现在的代码,aspx的
<form id="myform" runat="server">
<div class="navigation">
首页 > 控制面板 > 上传文件管理</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)
{
}
}
}
...全文
249 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChinaXtHuLang 2013-08-16
  • 打赏
  • 举报
回复
自己搞定了。。太多混分的人了。。我都把标题写的那么清楚了。。 都说了是遍历文件及文件夹。都没有用到表。你们。。。。哎。真心对混分的无语啊。
bzhf1206 2013-08-15
  • 打赏
  • 举报
回复
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>
ChinaXtHuLang 2013-08-15
  • 打赏
  • 举报
回复
楼上说的对。。所以1楼就是再混分。。 楼上的。帮我看看吧。我这个怎么实现分页。。
  • 打赏
  • 举报
回复
aspnetpager只是提供了一个页码功能而已,实际他并没有实现分页,分页的功能需要自己写(不知道对不对啊,至少我是这样用的) 比如说数据源 List<Object> allList; List<Object> pageList = allList.Skip(20).Take(10);
ChinaXtHuLang 2013-08-15
  • 打赏
  • 举报
回复
还我没有写清楚标题,还是aspnetpager真的可以对遍历出来的文件进行分页? 还是楼上想混分? 不是涉及到与表的操作,aspnetpager可以么?
全栈极简 2013-08-15
  • 打赏
  • 举报
回复
下一个aspnetpager控件进行分页就可以了,也有示例而且简单。

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧