我在页面上有一个带有treeview结构的asp.net应用程序显示文件名。 用户单击复选框以在树视图中选择下载文件后,可以单击“提交”按钮。 首先,我需要检索已检查(选定)的节点路径值。 其次,将具有文件夹/文件名的所有节点路径传递给客户端javascript,以将文件下载到本地机器。 (我们正在使用使用javascript功能的第三方Softartisans XFile下载。)
我能够在代码隐藏时使用onclick检索nodepath值,但是有问题将值传递给javascript函数。
我的问题是“我有办法调用javascript函数并在回发后传递值。我使用了ReisterArrayDeclaration,代码为..
if (!IsPostBack)
{
dnlFile = getDownloadFile();
ClientScriptManager csm = Page.ClientScript;
csm.RegisterArrayDeclaration("dnlFile", dnlFile);
btnDownLink.Attributes.Add("OnClick", "btnFileDown_Click('" + dnlFile + "')");
}
protected void btnDownLoad_Click(object sender, EventArgs e)
{
TreeView tv = tvFileDown;
if (tv.CheckedNodes.Count > 0)
{
foreach (TreeNode node in tv.CheckedNodes)
{
string strFilePath = Server.MapPath(initFolderPath + node.ValuePath);
if (Directory.Exists(strFilePath))
{
lblSelectedNode.Text = node.ValuePath + ", ";
}
else
{
if (File.Exists(strFilePath))
{
dnFile.Add(node.ValuePath);
}
}
}
dnlFile = getDownloadFile();
}
}
private string getDownloadFile()
{
string downLoadFile = "";
if (dnFile.Count > 0)
{
for (var i = 0; i < dnFile.Count; i++)
{downLoadFile += dnFile[i].ToString() + ", ";}
}
lblFinalFilePath.Text = downLoadFile;
return downLoadFile;
}
Thans挺进你的帮助!!
答案 0 :(得分:0)
好吧,我认为你需要的是注册启动脚本
假设您有一个javascript接受带有文件路径的数组,并调用该函数来下载该文件(您说它是客户端)
function downloadFiles(filepaths){
for( var file in filepaths)
{
download(file);
}
}
在代码隐藏中,你会这样做:
protected void btnDownload_Click(object sender, EventArgs e)
{
TreeView tv = tvFileDown;
String filepaths;
if (tv.CheckedNodes.Count > 0)
{
//build the string with js array syntax
}
//then you call the javascript function
this.Page.ClientScript.RegisterStartupScript(this.GetType(),
"CallDownloadFIlesFunction",
"downloadFiles('" + filepaths + "');", // here you call the javascript function
true);
}