遍历获取了某个目录下的所有本地文件夹及文件(包含了子文件夹),现在父文件夹分页没有问题,但是点击进入子文件夹后就出问题了(点击下一页或者上一页操作时返回的是父文件夹的分页内容),请指教?
代码如下:
前台代码:
<asp:HyperLink ID="lnkPrev" runat="server">上一页</asp:HyperLink> <span class="pager-current"><span>
<asp:Label ID="lblCurrentPage" runat="server" Text="Label"></asp:Label></span></span> <span>
<asp:Label ID="lblTotalPages" runat="server" Text="Label"></asp:Label></span><span>
<asp:HyperLink ID="lnkNext" runat="server">下一页</asp:HyperLink></span></div>
后台代码:
List<fileModel> fm = new List<fileModel>();
PagedDataSource pds = new PagedDataSource();
System.IO.DirectoryInfo dir;
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false)
{
dir = new System.IO.DirectoryInfo(Server.MapPath((@"~\uploadfiles\")));
LoadDir(dir.ToString(),false);
}
}
#region 遍历文件夹并读取文件夹名称和文件名称绑定到泛型集合
/// <summary>
/// 遍历文件夹并读取文件夹名称和文件名称绑定到泛型集合
/// </summary>
/// <param name="FullPath"></param>
private void LoadDir(string FullPath,bool ifFolder)
{
fm.Clear();
pds.DataSource = null;
string [] MyFiles,MyDirs;
MyFiles = Directory.GetFiles(FullPath); //得到该目录下所有文件
MyDirs= Directory.GetDirectories(FullPath); //得到该目录下所有目录
//遍历添加文件到List中
for (int i = 0; i < MyFiles.Length; i++)
{
fileModel f = new fileModel();
string name=MyFiles[i].ToString();
f.Filename = name.Substring(name.LastIndexOf("\\") + 1); //截取文件名称
f.Filepath = MyFiles[i].ToString();
if (name.Substring(name.IndexOf(".")+1).ToLower() == "pdf") //判断文件后缀名是pdf还是excel
{
f.Imgtype = "img/pdf.png";
}
else
{
f.Imgtype = "img/excel.png";
}
fm.Add(f);
}
//遍历添加文件夹到List中
for (int i = 0; i < MyDirs.Length; i++)
{
fileModel f = new fileModel();
string name = MyDirs[i].ToString();
f.Filename = name.Substring(name.LastIndexOf("\\") + 1); ;
f.Filepath = MyDirs[i].ToString();
f.Imgtype = "img/folder.png";
fm.Add(f);
}
//设置分页控件
pds.DataSource = fm;
pds.PageSize = 3;
pds.AllowPaging = true;
int totalCount = pds.PageCount;
int currPage;
if (ifFolder) //判断是否是文件夹
{
currPage = 1;
}
else
{
if (Request.QueryString["Page"] != null)
{
currPage = Convert.ToInt32(Request.QueryString["Page"]);
}
else
{
currPage = 1;
}
}
pds.CurrentPageIndex = currPage - 1;
lblCurrentPage.Text = "当前页:[" + currPage.ToString() + "]";
lblTotalPages.Text = "总页数:[" + totalCount.ToString() + "]";
if (!pds.IsFirstPage)
lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(currPage - 1);
if (!pds.IsLastPage)
lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(currPage + 1) ;
//把PagedDataSource 对象赋给DataList控件
this.FileList.DataSource = pds;
this.FileList.DataBind();
}
#endregion
#region 判断点击Datalist的事件
/// <summary>
/// 判断点击DataList事件
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
protected void FileList_ItemCommand(object source, DataListCommandEventArgs e)
{
string FilePath = e.CommandArgument.ToString();
if (FilePath.IndexOf(".") > -1) //判断如果是文件
{
string url=convertUrl(FilePath);
if (url.Substring(url.IndexOf(".") + 1).ToLower() == "pdf") //判断文件后缀名是pdf还是excel
{
Response.Redirect("web/viewer.html?file=" + "../" + url);
}
else
{
Response.Redirect("PdfViewer.aspx?url=" + url);
}
}
else
{
dir = new System.IO.DirectoryInfo(Server.MapPath((@"~\"+FilePath+"\\")));
LoadDir(dir.ToString(),true);
}
}
#endregion
父文件夹:
子文件夹: