2011-11-09 21 views
0

同じWebページに2つのASPxUploadControlコントロールが必要です。 UPLOADボタンを1つ押すと、両方のコントロールからのアップロードが開始されます。これは簡単です:Jscriptコードでは、両方のコントロールのUpload()メソッドを呼び出します。サーバー側では、両方のコントロールでFilesUploadCompleteイベントを処理します。ASPxUploadControl:2つのコントロールからデータを同期する方法は?

しかし、私は次の問題があります - 私のアプリケーションは両方のコントロールからUploadedFilesリストを持っている必要があります。 FilesUploadCompleteイベントハンドラが1番目のASPxUploadControlに対して呼び出されると、2番目のコントロールのUploadedFilesプロパティはnullになります。したがって、FilesUploadCompleteイベントハンドラが2番目のASPxUploadControlに対して呼び出されると、1番目のコントロールのUploadedFilesプロパティはnullになります。

問題を何とか解決できますか?私はPostbackを使ってファイルをアップロードすることができました - UPLOADボタンがクリックされたときにフォーム全体のポストバックを実行しますか?これにより、両方のUploadedFilesリストが同時に表示されますが、別の問題が発生します。プログレスインジケータはポストバックモードでは機能しません。これは私には受け入れられません - アップロードの進行状況を表示したい。

答えて

0

複数のファイル入力を持つ単一のASPxUploadControlインスタンスを使用できます。これについては、アップロード制御 - マルチファイルアップロードhttp://demos.devexpress.com/ASPxperienceDemos/UploadControl/MultiFileUpload.aspxオンラインデモを参照してください。

+0

残念ながら私はできません。私のアプリケーションには2つのASPxUploadControlコントロールが必要です(それぞれ1つのSEVEALファイル入力フィールドが必要です)。私は2つのファイル 'パネル'のようなものが必要です。左は1番目のASPxUploadControlインスタンス、右は2番目のASPxUploadControlインスタンスです。 UPLOADがクリックされた後、両方のコントロールからすべてのファイルをアップロードして、左側のパネルからファイルをindex [i]、ファイルを右側のパネルからindex [i]>ペアにする必要があります。 – KellyLynch

1

これは奇妙な状況ですが、これを試すことができます:
1. Uploadメソッドを呼び出す前に、両方のアップロードコントロールファイルリストをサーバーに送信します。これを行うには、ajaxを使用してカスタムhttpハンドラを呼び出します。 jQueryを使用する場合:

$.ajax(
{ 
    url: 'MyHandler.ashx', 
    dataType: 'json', 
    cache: false, 
    data: { fileList1: uploadControlFileList1, fileList2: uploadControlFileList2}, 
    success: function() 
    { 
     // call Upload methods here; 
    } 
}); 

2.あなたのハンドラでは、セッションIDとともにデータベースのファイルリストを保存します。または、あなたが簡単な場合は、このリストをセッションに保存することもできます。また、ファイルリストが受信された時刻を保存します。

3.ファイルを受け取ったら、あなたのリストにそのファイルがあるかどうかを確認し、それを他の制御ファイルとペアリングしようとします。必要に応じてステップ2から時間を使用して、ファイルリストを選択します。あなたがそれを受け取ったときにアップロードされたものとしてマークする。他の制御ファイルを待ちます。すべてのコントロールファイルがアップロードされると、fileListsをsession/dbから削除し、ロジックを続行します。

これにはいくつかの作業がありますが、うまくいくはずです。

関連する問題