jquery配合NETは指定バインドデータをクリックしてワンタッチでダウンロードできる
4527 ワード
最近、トレーニング管理システムで問題が発生しました.バインドされたデータをクリックし、指定された添付ファイルをダウンロードし、一括ダウンロードする必要があります(バインドされたデータはdatagridではなく、バックグラウンドの接続されたバインドです).
効果図は以下の通りです.
基本的な考え方:
1.jquery選択したバインドデータのidを取得し、このidを配列に割り当て、最後にこの配列の値をページで作成した非表示変数に割り当てる
2.バックグラウンドで隠し変数の値を取得し、それを循環配列して値を取り、バインド値のダウンロードアドレスを得て、最後にパッケージしてダウンロードする
まずhtmlのdivはバックグラウンドに基づいてバインドされます
バックグラウンドパッチなのでbuttonもバックグラウンドにパッチして、バックグラウンドbutton呼び出しjs
jsはbuttonイベントの非表示をトリガーします
pageloadと同層コード
コンポーネントの追加:http://files.cnblogs.com/files/edisoner/ICSharpCode.SharpZipLib.rar
効果図は以下の通りです.
基本的な考え方:
1.jquery選択したバインドデータのidを取得し、このidを配列に割り当て、最後にこの配列の値をページで作成した非表示変数に割り当てる
2.バックグラウンドで隠し変数の値を取得し、それを循環配列して値を取り、バインド値のダウンロードアドレスを得て、最後にパッケージしてダウンロードする
まずhtmlの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
function download() {
$("#btnDownload").click();
}
jsはbuttonイベントの非表示をトリガーします
后台一键打包下载代码:
protected void btnDownload_Click(object sender, EventArgs e)
{ //ZipFileByCode();
string attachGuid = arrayGuid.Value; string[] sArray = attachGuid.Split(',');
List list = new List(); foreach (string i in sArray)
{ // id
}
Download(list, ""+lblCourseName.Text+" .rar");
}
private void Download(IEnumerable 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", "p_w_upload;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