【发布时间】:2020-01-21 00:15:45
【问题描述】:
我有一个显示产品图像的网格视图:
<form id="form1" runat="server">
<asp:Button ID="btnDownload" runat="server" CssClass="dist-down-button" Text="Download Selected" OnClick="DownloadFiles" />
<asp:Button ID="Button1" runat="server" CssClass="dist-down-button" Text="Download All" OnClick="DownloadAll" />
<asp:GridView ID="GridView1" runat="server" CssClass="mydatagrid" PagerStyle-CssClass="pager" HeaderStyle-CssClass="header" RowStyle-CssClass="rows" AllowPaging="True" OnPageIndexChanging="datagrid_PageIndexChanging" AutoGenerateColumns="false" EmptyDataText="No files available">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" />
<asp:Label ID="lblFilePath" runat="server" Text='<%# Eval("Value") %>' Visible="false"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Text" HeaderText="Image Name" />
</Columns>
</asp:GridView>
</form>
绑定功能:(将产品文件夹中的所有文件与数据库中的产品图像列表匹配并显示匹配的产品)
protected void BindData()
{
images = GetProductImages();
string[] filePaths = Directory.GetFiles(Server.MapPath("~/upload/Products/"));
List<ListItem> files = new List<ListItem>();
foreach (string filePath in filePaths)
{
if (images.IndexOf(Path.GetFileName(filePath)) > -1)
{
files.Add(new ListItem(Path.GetFileName(filePath), filePath));
}
}
GridView1.DataSource = files;
GridView1.DataBind();
}
protected void datagrid_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
BindData();
}
Download All 功能:(查找gridview列表并下载所有列出的文件)
protected void DownloadAll(object sender, EventArgs e)
{
using (ZipFile zip = new ZipFile())
{
zip.AlternateEncodingUsage = ZipOption.AsNecessary;
zip.AddDirectoryByName(ProductUrl);
foreach (GridViewRow row in GridView1.Rows)
{
string filePath = (row.FindControl("lblFilePath") as Label).Text;
zip.AddFile(filePath, ProductUrl);
}
Response.Clear();
Response.BufferOutput = false;
string zipName = String.Format("Zip_{0}.zip", DateTime.Now.ToString("yyyy-MMM-dd-HHmmss"));
Response.ContentType = "application/zip";
Response.AddHeader("content-disposition", "attachment; filename=" + zipName);
zip.Save(Response.OutputStream);
Response.End();
}
}
当我单击“全部下载”按钮时,它正在正确下载所有文件。 但是在我添加分页后,现在下载全部只下载当前页面。
注意:复选框用于选择下载功能。如您所见,我不是在寻找在 DownloadAll 函数中选中的复选框。
有谁知道为什么会发生这种情况,尽管我没有在我的函数中寻找任何复选框?
【问题讨论】:
标签: c# asp.net gridview dotnetzip