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

jQuery mit .NET umgeht das Anbinden spezifischer Daten und ermöglicht ein Ein-Klick-Download

Kürzlich habe ich in einem Schulungsmanagementsystem ein Problem getroffen. Die Anforderungen sind, dass auf die gebundenen Daten geklickt wird, um die angegebenen Anhänge herunterzuladen, und dies ist ein Batch-Download (gebundene Daten sind keine datagrid, die im Hintergrund zusammengefügt werden).

Das Bild zeigt folgendes:

Grundsätzliche Idee:

1.jQuery erhält die ausgewählten bindenden Datenid und weist diesen id-Wert auf den Array zu, und schließlich wird der Wert dieses Arrays dem versteckten Variablen im Dokument zugewiesen

2.Der im Hintergrund erhaltene Wert des versteckten Variablen wird in den Array gelesen und der Wert des Bindungsortes, der zum Download verwendet wird, erhalten und schließlich wird das Paket heruntergeladen

Zunächst wird der div im html nach der Bindung im Hintergrund

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

 Zweitens sind die Download-Optionen für Anhänge, die mit jQuery implementiert werden, und der Wert wird dem versteckten Variablen im Dokument zugewiesen. Der Code lautet wie folgt:
 

// Download-Optionen für Anhänge
  $attach = $("#download-list");
  var arr = []
  $attach.on('click', '.no', function () {
    $(this).toggleClass('checked');//Einrichten und Entfernen, ausgewählt und nicht ausgewählt
    if ($(this).hasClass('checked')) {
      var guid = $(this).children("#hidAttachGuid").val();
      arr.push(guid);//Fügen Sie guid dem arr-Array hinzu
    }
    else
    {//Wenn abgebrochen wird
      var guid = $(this).children("#hidAttachGuid").val();
      var n = arr.indexOf(guid);
      if (n != -1)
      arr.splice(n, 1);//Entfernen Sie die angegebenen nicht ausgewählten guids aus dem arr-Array
    }
    $("[id$='arrayGuid']").val(arr);
  });

Weil es im Hintergrund zusammengesetzt wird, wurde der Button auch im Hintergrund zusammengefügt, und der im Hintergrund befindliche Button ruft js auf

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

js löst das Ausblenden des Buttons aus

<span style="display: none">
   <asp:Button ID="btnDownload" OnClick="btnDownload_Click" Text="bestätigen" runat="server" />
    <input type="text" id="arrayGuid" runat="server"}} />
</span>

Code für einheitliches Download-Paketenpacken im Hintergrund:

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)
      {
        //Hier erhalten wir alle erforderlichen IDs für den Download im Zyklus
      }
      Download(list, ""+lblCourseName.Text+"zugehörige Anhänge Materialien.rar");
    }
public void ZipFileByCode()
    {
      MemoryStream ms = new MemoryStream();
      byte[] buffer = null;
      using (ZipFile file = ZipFile.Create(ms))
      {
        file.BeginUpdate();
        file.NameTransform = new MyNameTransfom();//Mit diesem Namensformatierer können die Dateinamen innerhalb der Datei bearbeitet werden. Standardmäßig werden die entsprechenden Verzeichnisse im Zip-Datei automatisch basierend auf dem Dateipfad erstellt.
        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)
    {
      //Downloaden von gepackten Dateien basierend auf der Auswahl 
      MemoryStream ms = new MemoryStream();
      byte[] buffer = null;
      using (ZipFile file = ZipFile.Create(ms))
      {
        file.BeginUpdate();
        file.NameTransform = new MyNameTransfom();//Mit diesem Namensformatierer können die Dateinamen innerhalb der Datei bearbeitet werden. Standardmäßig werden die entsprechenden Verzeichnisse im Zip-Datei automatisch basierend auf dem Dateipfad erstellt. 
        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();
    }

und Code, der mit pageload auf gleicher Ebene ist

public class MyNameTransfom : ICSharpCode.SharpZipLib.Core.INameTransform
  {
    #region INameTransform-Mitglied
    public string TransformDirectory(string name)
    {
      return null;
    }
    public string TransformFile(string name)
    {
      return Path.GetFileName(name);
    }
    #endregion
  }

Das ist der gesamte Inhalt dieses Artikels. Wir hoffen, dass er Ihnen bei Ihrem Lernen hilft und dass Sie die呐喊教程 stark unterstützen.

Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem Urheberrechtsinhaber. Der Inhalt wurde von Internetnutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht von Hand bearbeitet. Sollten Sie Inhalte entdecken, die möglicherweise urheberrechtlich geschützt sind, senden Sie bitte eine E-Mail an: notice#w3Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem Urheberrechtsinhaber. Der Inhalt wurde von Internetnutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht von Hand bearbeitet. Sollten Sie Inhalte entdecken, die möglicherweise urheberrechtlich geschützt sind, senden Sie bitte eine E-Mail an: notice#w

Mag dir gefallen