2011-04-04 80 views
2

我在頁面上有一個帶有treeview結構的asp.net應用程序顯示文件名。 用戶點擊複選框在樹形視圖上選擇下載文件後,他們可以點擊提交按鈕。 首先,我需要檢索選中(選定)的節點路徑值。 其次,將所有包含文件夾/文件名的節點路徑傳遞給客戶端JavaScript,以將文件下載到本地計算機。 (我們正在使用使用JavaScript功能的第三方Softartisans XFile下載)。如何使用相同的提交按鈕調用javascript postback codebehind

我可以在代碼隱藏的情況下使用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

請使用代碼塊格式化你的代碼 – Andre 2011-04-04 20:13:42

+0

你能不能也請發送客戶端代碼調用下載的文件? – Andre 2011-04-04 20:20:49

+0

一旦你回發,你已經提交了頁面。它不再是客戶端。 – 2011-04-04 20:30:48

回答

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); 
} 
+0

非常感謝,所以安德烈!我使用了ReisterStartupScript。它適用於我的應用程序。 – Ling 2011-04-05 14:56:23

相關問題