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


Posted in Javascript onOctober 28, 2016

最近在做培训管理系统中遇到一个问题,需求需点击绑定的数据,将指定的附件下载下来,并且是批量下载(绑定的数据非datagrid,后台拼接的绑定)。

效果图如下:

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

大体思路:

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
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js压缩利器
Feb 20 Javascript
js 返回时间戳所对应的具体时间
Jul 20 Javascript
自己整理的一个javascript日期处理函数
Oct 16 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
Dec 13 Javascript
javascript执行环境及作用域详解
May 05 Javascript
vue动态组件实现选项卡切换效果
Mar 08 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
May 07 Javascript
Node调用Java的示例代码
Sep 20 Javascript
在微信小程序中使用图表的方法示例
Apr 25 Javascript
微信小程序页面调用自定义组件内的事件详解
Sep 12 Javascript
基于JavaScript实现控制下拉列表
May 08 Javascript
javascript函数式编程基础
Sep 15 Javascript
微信小程序 页面跳转传参详解
Oct 28 #Javascript
微信小程序 wx:key详细介绍
Oct 28 #Javascript
微信小程序 使用picker封装省市区三级联动实例代码
Oct 28 #Javascript
基于Layer+jQuery的自定义弹框
May 26 #Javascript
微信开发 js实现tabs选项卡效果
Oct 28 #Javascript
微信开发 使用picker封装省市区三级联动模板
Oct 28 #Javascript
Easyui的组合框的取值与赋值
Oct 28 #Javascript
You might like
PHP+MySQL5.0中文乱码解决方法
2006/11/20 PHP
destoon数据库表说明汇总
2014/07/15 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
Google AJAX 搜索 API实现代码
2010/11/17 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
2017/03/17 Javascript
JS简单获得节点元素的方法示例
2018/02/10 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
2019/04/17 Javascript
一个手写的vue放大镜效果
2019/08/09 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
Python采用Django制作简易的知乎日报API
2016/08/03 Python
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
对python模块中多个类的用法详解
2019/01/10 Python
Django中间件基础用法详解
2019/07/18 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
2020/07/30 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
用CSS禁用输入法(CSS3 UI规范)实例解析
2012/12/04 HTML / CSS
Jowissa官方网站:瑞士制造的手表,优雅简约的设计
2020/07/29 全球购物
一套带网友答案的.NET笔试题
2016/12/06 面试题
财务与信息服务专业推荐信
2013/11/28 职场文书
酒吧总经理岗位职责
2013/12/10 职场文书
生产部主管岗位职责
2014/01/06 职场文书
酒店员工手册范本
2015/05/14 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python