4

ページ内の別のコントロールを介してAsnyncFileUploadコントロールを起動したいと思います。

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();                
        }
4

2 に答える 2

2

私はこれをさらに調査し、これができないことを発見しました。セキュリティ上の理由により、他のコントロールからのファイルタイプ入力の起動は無効になっています。したがって、これは実行できません。

fileuploadコントロールのスタイルを設定する唯一の回避策は、不透明度0のコントロールを配置し、このファイルコントロールの下にコントロールを配置し、HTMLのZインデックスを変更することです。実際、これはAsyncFileUploadコントロールで使用される正確なトリックです。

これがトリックを説明するリンクです http://www.quirksmode.org/dom/inputfile.html

だから私はこのトリックをHTMLファイルアップロードコントロールに内部的に適用しているAsyncFileUploadに適用しました

皆さんありがとう

于 2011-12-19T08:18:23.137 に答える
-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"/>
于 2013-09-30T13:14:02.303 に答える