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 相关文章推荐
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
Feb 18 Javascript
JQuery实现点击div以外的位置隐藏该div窗口
Sep 13 Javascript
ECMAScript5中的对象存取器属性:getter和setter介绍
Dec 08 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
Jun 13 Javascript
JS无缝滚动效果实现方法分析
Dec 21 Javascript
Angular.JS中指令ng-if的注意事项小结
Jun 21 Javascript
利用ES6实现单例模式及其应用详解
Dec 09 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
Jun 24 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
Apr 22 Javascript
openlayers 3实现车辆轨迹回放
Sep 24 Javascript
vue-video-player 断点续播的实现
Feb 01 Vue.js
javascript遍历对象的五种方式实例代码
Oct 24 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
模仿OSO的论坛(一)
2006/10/09 PHP
令PHP初学者头疼十四条问题大总结
2008/11/12 PHP
超级简单的php+mysql留言本源码
2009/11/11 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
php对csv文件的读取,写入,输出下载操作详解
2013/08/10 PHP
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
layui前段框架日期控件使用方法详解
2017/05/19 Javascript
nodejs 最新版安装npm 的使用详解
2018/01/18 NodeJs
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
Angular resolve基础用法详解
2018/10/03 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
一个计算身份证号码校验位的Python小程序
2014/08/15 Python
分析Python读取文件时的路径问题
2018/02/11 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
详解Python中import机制
2020/09/11 Python
国际奢侈品品牌童装购物网站:Designer Childrenswear
2019/05/08 全球购物
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
New Balance比利时官方网站:购买鞋子和服装
2021/01/15 全球购物
设计总监岗位职责
2013/12/07 职场文书
银行委托书范本
2014/04/04 职场文书
酒店管理失职检讨书
2014/09/16 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书
我的1919观后感
2015/06/03 职场文书
六年级作文之家庭作文
2019/12/12 职场文书