您好,欢迎访问一九零五行业门户网

jquery配合.NET实现点击指定绑定数据并且能够一键下载

需求需点击绑定的数据,将指定的附件下载下来,并且是批量下载(绑定的数据非datagrid,后台拼接的绑定)。
效果图如下:
大体思路:
1.jquery得到选中的绑定数据的id,将这个id赋值到数组中,最后将这个数组的值赋值给页面中创建的隐藏变量
2.后台获取到隐藏变量的值,并将它循环数组取值,得到绑定值的下载地址,最后打包下载
首先html中div根据后台绑定
<div id="downloadinfo" runat="server"></div>
其次是下载附件的选择,利用jquery实现,并且将值赋值给页面中的隐藏变量,代码如下:
// 下载附件的选择 $attach = $("#download-list"); var arr = [] $attach.on('click', '.no', function () { $(this).toggleclass('checked');//设置和移除,选中与不选中 if ($(this).hasclass('checked')) { var guid = $(this).children("#hidattachguid").val(); arr.push(guid);//将guid添加到arr数组中 } else {//取消选中时 var guid = $(this).children("#hidattachguid").val(); var n = arr.indexof(guid); if (n != -1) arr.splice(n, 1);//将指定不选中的guid移除arr数组 } $("[id$='arrayguid']").val(arr); });
因为是后台拼接的,把button也拼接在了后台,后台button 调用js
<button type='button' class='one-download' onclick='download()'>一键下载</button> function download() { $("#btndownload").click(); }
js触发隐藏button事件
<span style="display: none"> <asp:button id="btndownload" onclick="btndownload_click" text="确定" runat="server" /> <input type="text" id="arrayguid" runat="server" /> </span>
后台一键打包下载代码:
protected void btndownload_click(object sender, eventargs e) { //zipfilebycode(); string attachguid = arrayguid.value; string[] sarray = attachguid.split(','); list<string> list = new list<string>(); foreach (string i in sarray) { //这里是循环得到指定需要下载的所有id } download(list, ""+lblcoursename.text+"相关附件材料.rar"); }
public void zipfilebycode() { memorystream ms = new memorystream(); byte[] buffer = null; using (zipfile file = zipfile.create(ms)) { file.beginupdate(); file.nametransform = new mynametransfom();//通过这个名称格式化器,可以将里面的文件名进行一些处理。默认情况下,会自动根据文件的路径在zip中创建有关的文件夹。 file.add(server.mappath("/content/images/img01.jpg")); file.commitupdate(); buffer = new byte[ms.length]; ms.position = 0; ms.read(buffer, 0, buffer.length); } response.addheader("content-disposition", "attachment;filename=test.zip"); response.binarywrite(buffer); response.flush(); response.end(); }
private void download(ienumerable<string> files, string zipfilename) { //根据所选文件打包下载 memorystream ms = new memorystream(); byte[] buffer = null; using (zipfile file = zipfile.create(ms)) { file.beginupdate(); file.nametransform = new mynametransfom();//通过这个名称格式化器,可以将里面的文件名进行一些处理。默认情况下,会自动根据文件的路径在zip中创建有关的文件夹。 foreach (var item in files) { file.add(item); } //file.add(server.mappath("../../bigfileuploadstorage/1.png")); file.commitupdate(); buffer = new byte[ms.length]; ms.position = 0; ms.read(buffer, 0, buffer.length); } response.addheader("content-disposition", "attachment;filename=" + zipfilename); response.binarywrite(buffer); response.flush(); response.end(); }
和pageload同层代码
public class mynametransfom : icsharpcode.sharpziplib.core.inametransform { #region inametransform 成员 public string transformdirectory(string name) { return null; } public string transformfile(string name) { return path.getfilename(name); } #endregion }
其它类似信息

推荐信息