jquery配合.NET实现点击指定绑定数据并且能够一键下载
生活随笔
收集整理的這篇文章主要介紹了
jquery配合.NET实现点击指定绑定数据并且能够一键下载
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
原文鏈接
http://www.jb51.net/article/95983.htm
大體思路:
1.jquery得到選中的綁定數(shù)據(jù)的id,將這個(gè)id賦值到數(shù)組中,最后將這個(gè)數(shù)組的值賦值給頁面中創(chuàng)建的隱藏變量
2.后臺(tái)獲取到隱藏變量的值,并將它循環(huán)數(shù)組取值,得到綁定值的下載地址,最后打包下載
首先html中div根據(jù)后臺(tái)綁定
<div id="downloadInfo" runat="server"></div> 其次是下載附件的選擇,利用jquery實(shí)現(xiàn),并且將值賦值給頁面中的隱藏變量,代碼如下: // 下載附件的選擇 ??$attach = $("#download-list"); ??var arr = [] ??$attach.on('click', '.no', function () { ????$(this).toggleClass('checked');//設(shè)置和移除,選中與不選中 ????if ($(this).hasClass('checked')) { ??????var guid = $(this).children("#hidAttachGuid").val(); ??????arr.push(guid);//將guid添加到arr數(shù)組中 ??????? ????} ????else ????{//取消選中時(shí) ??????var guid = $(this).children("#hidAttachGuid").val(); ??????var n = arr.indexOf(guid); ??????if (n != -1) ??????arr.splice(n, 1);//將指定不選中的guid移除arr數(shù)組 ????} ????$("[id$='arrayGuid']").val(arr); ??}); 因?yàn)槭呛笈_(tái)拼接的,把button也拼接在了后臺(tái),后臺(tái)button 調(diào)用js <button type='button' class='one-download' onclick='download()'>一鍵下載</button> function download() { ??????$("#btnDownload").click(); ????} js觸發(fā)隱藏button事件 <span style="display: none"> ???<asp:Button ID="btnDownload" OnClick="btnDownload_Click" Text="確定" runat="server" /> ????<input type="text" id="arrayGuid" runat="server" /> </span> 后臺(tái)一鍵打包下載代碼: 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) ??????{ ????????//這里是循環(huán)得到指定需要下載的所有id ?? ??????} ??????Download(list, ""+lblCourseName.Text+"相關(guān)附件材料.rar"); ????} public void ZipFileByCode() ????{ ??????MemoryStream ms = new MemoryStream(); ??????byte[] buffer = null; ??????using (ZipFile file = ZipFile.Create(ms)) ??????{ ????????file.BeginUpdate(); ????????file.NameTransform = new MyNameTransfom();//通過這個(gè)名稱格式化器,可以將里面的文件名進(jìn)行一些處理。默認(rèn)情況下,會(huì)自動(dòng)根據(jù)文件的路徑在zip中創(chuàng)建有關(guān)的文件夾。 ????????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) ????{ ??????//根據(jù)所選文件打包下載 ??????MemoryStream ms = new MemoryStream(); ??????byte[] buffer = null; ??????using (ZipFile file = ZipFile.Create(ms)) ??????{ ????????file.BeginUpdate(); ????????file.NameTransform = new MyNameTransfom();//通過這個(gè)名稱格式化器,可以將里面的文件名進(jìn)行一些處理。默認(rèn)情況下,會(huì)自動(dòng)根據(jù)文件的路徑在zip中創(chuàng)建有關(guān)的文件夾。 ????????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 ??}轉(zhuǎn)載于:https://www.cnblogs.com/sjqq/p/6361198.html
總結(jié)
以上是生活随笔為你收集整理的jquery配合.NET实现点击指定绑定数据并且能够一键下载的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP 和 AJAX MySQL
- 下一篇: .NET Framework 各版本区别