jquery配合.NET实现点击指定绑定数据并且能够一键下载
生活随笔
收集整理的這篇文章主要介紹了
jquery配合.NET实现点击指定绑定数据并且能够一键下载
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文鏈接
http://www.jb51.net/article/95983.htm
大體思路:
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 ??}轉載于:https://www.cnblogs.com/sjqq/p/6361198.html
總結
以上是生活随笔為你收集整理的jquery配合.NET实现点击指定绑定数据并且能够一键下载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP 和 AJAX MySQL
- 下一篇: .NET Framework 各版本区别