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 判断代码全收集
Apr 28 Javascript
JavaScript中的typeof操作符用法实例
Apr 05 Javascript
jquery数组过滤筛选方法grep()简介
Jun 06 Javascript
jQuery中:password选择器用法实例
Jan 03 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
Mar 30 Javascript
js时钟翻牌效果实现代码分享
Jul 31 Javascript
深入理解requestAnimationFrame的动画循环
Sep 20 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
Nov 21 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
Nov 30 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
Jul 26 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
Aug 28 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
Jan 22 Vue.js
微信小程序 页面跳转传参详解
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
建立动态的WML站点(二)
2006/10/09 PHP
php删除数组元素示例分享
2014/02/17 PHP
CodeIgniter钩子用法实例详解
2016/01/20 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
基于PHP的登录和注册的功能的实现
2020/08/06 PHP
jQuery 学习第七课 扩展jQuery的功能 插件开发
2010/05/17 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
JS动态日期时间的获取方法
2015/09/28 Javascript
js如何打印object对象
2015/10/16 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
js中作用域的实例解析
2017/03/16 Javascript
用js将long型数据转换成date型或datetime型的实例
2017/07/03 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
2017/10/25 Javascript
微信小程序使用 vant Dialog组件的正确方式
2020/02/21 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
vue element el-transfer增加拖拽功能
2021/01/15 Vue.js
学习python的几条建议分享
2013/02/10 Python
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
利用Vscode进行Python开发环境配置的步骤
2020/06/22 Python
如何卸载python插件
2020/07/08 Python
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
新加坡时尚网上购物:Zalora新加坡
2016/07/26 全球购物
小学生安全保证书
2014/02/01 职场文书
新学期标语
2014/06/30 职场文书
表扬通报怎么写
2015/01/16 职场文书
大学生自我推荐信范文
2015/03/24 职场文书
2015年信访工作总结
2015/04/07 职场文书
律政俏佳人观后感
2015/06/09 职场文书
2016党校学习心得体会范文
2016/01/07 职场文书
《失物招领》教学反思
2016/02/20 职场文书
小学语文教学反思范文
2016/03/03 职场文书
python 进阶学习之python装饰器小结
2021/09/04 Python
mysql 子查询的使用
2022/04/28 MySQL