2011-12-18 161 views
3

我想通過頁面中的另一個控件啓動AsnyncFileUpload控件。通過按鈕啓動AsyncFileUpload控件

我已經使用ASP.NET AJAX工具包中的AsyncfileUpload並通過JQuery隱藏它。並在它旁邊放置一個按鈕。即使我點擊這個按鈕並選擇一個文件我想要啓動AsycnFileUpload並上傳文件。

我已經寫了大部分的代碼,但當我選擇一個文件時,我得到一個Javascript錯誤。


(錯誤:拒絕訪問;

地點:setTimeout(function() { mainForm.submit(); //Error here; uploader._waitTimer = setTimeout(function() { uploader._wait() }, 100); }, 0);


<asp:Button ID="btnFileUpload" runat="server" Text="Add" onclientclick="FileUploadClick(); return false;"/> 
<ajaxToolkit:AsyncFileUpload runat="server" ID="AsyncFileUpload1" Width="400px" UploaderStyle="Modern" UploadingBackColor="#CCFFFF"/> 

,這是我的Javascript(我看到了由控制生成的標記,並得到了文件輸入 鍵入附加「_ct102」)

function FileUploadClick() { 
      var fileUploadControl = document.getElementById('<%= AsyncFileUpload1.ClientID %>' + '_ctl02') 
      fileUploadControl.click(); 
      //fileUploadControl.setActive();     
     } 

回答

2

我對此進行了更多研究,發現這是無法完成的。 由於安全原因,禁止從其他控件輸入文件類型輸入。所以不能這樣做。

只有使用不透明度爲0的控件並將控件置於該文件控件的下方並更改HTML中的Z索引時,才能變通風格的fileupload控件。 Infact這是使用AsyncFileUpload控件的確切技巧。

這裏是鏈接explaing的伎倆 http://www.quirksmode.org/dom/inputfile.html

所以我申請的AsyncFileUpload這一招在內部是運用它的HTML文件上傳控件

感謝所有

-1

簡單的解決了以上問題是添加CSS,例如,這將適用於所有瀏覽器。

<style type="text/css"> 
    .FileUploadClass input 
    { 
     width:100%!important; // mandatory 
    } 
</style> 

<ajaxToolkit:AsyncFileUpload ID="asyncFileUpload" runat="server" CssClass="FileUploadClass" OnUploadedComplete="asyncFileUpload_UploadedComplete" UploaderStyle="Traditional"/> 
+0

你可以解釋一下你的代碼如何解決問題。 – 2013-10-01 13:54:54