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

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

效果图如下:

大体思路:

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");
        }

 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
    }

添加组件:http://files.cnblogs.com/files/edisoner/ICSharpCode.SharpZipLib.rar

时间: 2024-10-10 02:01:28

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

使用jQuery的Highcharts插件制作图标如何绑定数据

基于mvc的Razor语法,实现Highcharts图表插件的数据绑定 1.引用几个库文件 <script src="~/Scripts/jquery-1.8.2.min.js"></script> <script src="~/Scripts/Highcharts/highcharts.js"></script> <script src="~/Scripts/Highcharts/exporting.

jQuery源码解析之on事件绑定

本文采用的jQuery源码为jquery-3.2.1.js jquery的on方法用来在选定的元素上绑定一个或多个事件处理函数. 当参数selector存在时,通常会用来对已经存在的元素或将来即将添加到文档中的元素做事件委托,表示当点击document中的selector元素时,将触发function回调函数. 1 <div id="div" style="font-weight:800;font-size:24px;text-align:center;color:re

jQuery获取被被点击元素的id属性值

jQuery获取被被点击元素的id属性值:有时候可能需要获取被点击元素的一些信息,本章就以id属性为例子,进行演示一下,当然在实际应用中可能没有如此的简单,不过复杂的功能都是由小的功能组合而成的,下面通过实例代码对此做一下简单介绍.代码如下: $(document).click(function (e){ var v_id=e.target.id; } ) 相关阅读:1.click事件而已参阅jQuery的click事件一章节. 2.target属性可以参阅jQuery的event.target

关于JQuery中$.data绑定数据原理或逻辑

问题: JQuery中,对于.data([key],[value])函数,当使用其进行数据绑定时,假设要绑定的数据是“引用数据类型”,也就是对象:那么.data函数绑定的是该对象的副本还是该对象的一个引用?下面通过以下小例子来测试下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Test<

xamarin.android listview绑定数据及点击事件

前言 listview是用来显示数据列表的一个控件,今天给大家带来如何使用cursor进行数据绑定以及点击事件. 导读 1.如何创建一个listview 2.如何使用cursor进行绑定数据 3.listview的点击事件 正文 1.如何创建一个listview 这里我们自定义一个listview的视图,首先打开Main.axml,拖一个listview放进去. 右击Layout新建一个视图,名为UserListItemLayout.axml,拖两个textview进去,如图 这样我们就完成了一

基于jQuery鼠标滑过点击事件音效试听

基于jQuery鼠标滑过点击事件音效试听.这是一款非常简单实用的HTML元素发音音频特效jQuery插件.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="wrapper"> <h1 class="sub-section__title">eventType : </h1> <div class="center" style="margin-top: 40

jquery小例子,点击显示个数

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Insert title here</title> 6 <script type="text/javascript" src="../js/jquery-1.8.2.js"></script> 7 </hea

数据绑定(三)为Binding指定绑定源的几种方法

原文:数据绑定(三)为Binding指定绑定源的几种方法 Binding的源是数据的来源,所以,只要一个对象包含数据并能通过属性把数据暴露出来,它就能当作Binding的源来使用,常用的办法有: 一.把普通CLR类型单个对象指定为Source 如果类型实现了INotifyPropertyChanged接口,则可通过在属性的set语句中激发PropertyChanged事件来通知Binding数据已被更新 二.把普通CLR集合类型对象指定为Source 一般是把控件的ItemsSource属性使用

WPF ListView点击删除某一行并获取绑定数据

最近在开发WPF程序时遇到一个问题,在gridview中希望实现在每一行最后添加一个删除的按钮,但是发现点击每行的button时只会触发button的点击事件,并没有选中这一行,此时调用list.SelectedItem时无法得到对应的绑定数据. UI.xaml<ListView x:Name="list" Height="494" Width="1121" FontSize="16" ><ListView.