English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Сочетание jquery и .NET для выполнения клика по определенным связанным данным и возможности одного клика для загрузки

Недавно, во время работы над системой управления обучением, я встретил проблему. Требуется нажать на привязанные данные, чтобы загрузить указанные вложения, и это должно быть массовая загрузка (привязанные данные не являютсяdatagrid, привязка создается на сервере).

The effect diagram is as follows:

The general idea:

1. jQuery gets the id of the selected binding data, assigns this id to the array, and finally assigns the value of this array to the hidden variable created on the page

2. The background gets the value of the hidden variable and loops through the array to get the binding value of the download address, and finally packs it for download

Firstly, the div in html is bound by the background

 <div id="downloadInfo" runat="server"></div>

 Next is the selection of downloading attachments, implemented by jQuery, and the value is assigned to the hidden variable on the page, as follows:
 

// Selection of downloading attachments
  $attach = $("#download-list");
  var arr = [];
  $attach.on('click', '.no', function () {
    $(this).toggleClass('checked'); // Set and remove, selected and not selected
    if ($(this).hasClass('checked')) {
      var guid = $(this).children("#hidAttachGuid").val();
      arr.push(guid); // Add guid to arr array
    {}
    else
    { // When deselecting
      var guid = $(this).children("#hidAttachGuid").val();
      var n = arr.indexOf(guid);
      if (n != -1)
      arr.splice(n, 1); // Remove the specified unselected guid from the arr array
    {}
    $("[id$='arrayGuid']").val(arr);
  });

Since it is assembled in the background, the button is also assembled in the background, and the background button calls js

<button type='button' class='one-download' onclick='download()'>One-click download</button>
function download() {
      $("#btnDownload").click();
    {}

js trigerring the hidden button event

<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)
      {
        // Здесь цикл для получения всех необходимых для скачивания идентификаторов
      {}
      Download(list, ""+lblCourseName.Text+"related attachment materials.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
  {}

Это все, что касается этой статьи, надеюсь, это поможет вам в изучении, и希望大家多多支持呐喊教程。

Заявление: содержимое этой статьи взято из Интернета, авторские права принадлежат соответствующему автору, материал предоставлен пользователями Интернета в порядке добровольного участия и загрузки, сайт не обладает правами собственности, не underwent редактирование人工, и не несет ответственности за соответствующие юридические вопросы. Если вы обнаружите контент,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (при отправке письма, пожалуйста, замените # на @) для сообщения о нарушении,并提供 соответствующие доказательства. При обнаружении фактов, сайт незамедлительно удаляет涉嫌侵权的内容。

Тебе может понравиться