指定された添付ファイルをダウンロードするには、バインドされたデータをクリックし、バッチでダウンロードする必要があります (バインドされたデータはデータグリッドではなく、バックグラウンド スプライシング バインディングです)。
レンダリングは次のとおりです:
一般的な考え方:
1.jquery は選択されたバインドされたデータの ID を取得し、この ID を配列に割り当て、最後にこの配列の値を非表示データに割り当てます。ページ変数で作成されたオブジェクト
2. バックグラウンドで隠し変数の値を取得し、配列をループしてバインドされた値のダウンロード アドレスを取得し、最後にパッケージ化してダウンロードします
まず、 HTML は背景に従ってバインドされます
<div id="downloadInfo" runat="server"></div>
次に、添付ファイルをダウンロードするオプションであり、jquery を使用して実装され、ページ内の隠し変数に値を割り当てます。コードは次のとおりです。
背景に接合されているため、ボタンも背景に接合されており、背景ボタンはjsを呼び出します
// 下载附件的选择 $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); });
jsが隠しボタンイベントをトリガーします
<button type='button' class='one-download' onclick='download()'>一键下载</button> function download() { $("#btnDownload").click(); }
Backendワンクリックパッケージダウンロードコード:
<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(); }