如何使用相同的提交按钮调用javascript postback codebehind

时间:2011-04-04 20:11:40

标签: javascript asp.net

我在页面上有一个带有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挺进你的帮助!!

1 个答案:

答案 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);
}