2011-08-10 4 views
3

私は複数のasyncfileuploadコントロールがC#の背後にあるコードから作成されていますが、コードのUploadedCompleteセクションまたはそのインスタンスのインスタンスから正しいコントロールインスタンスを参照する方法がわかりません。複数のAJAX asyncfileuploadがC#コードの背後に作成されました

モーダルポップアップコントロールの異なるページに20個の非同期ファイルアップロードを使用しているため、ボタンをクリックしたときに各火の背後にあるコードからすべてのコントロールを作成します。したがって、C#のみを使用することは絶対に必要です。

次のように各インスタンスが作成されます。ここでは

AsyncFileUpload afuUploadEvents  = new AsyncFileUpload(); 
afuUploadEvents.ID     = "AsyncFileUploadId"; 
afuUploadEvents.UploadedComplete += new EventHandler<AsyncFileUploadEventArgs>this.afuUpload_UploadedComplete); 
// other settings... blah blah blah... 

は、コントロールを見つけるための試みである:

protected void afuUpload_UploadedComplete(object sender, AsyncFileUploadEventArgs e) 
{ 
    // get the file upload control - doesn't work 
    AsyncFileUpload oFileUpload = (AsyncFileUpload)sender; 
    // Try again - doesn't work 
    ContainerElem.FindControl("AsyncFileUploadId"); 
} 

は、どのように私は私のアップロードハンドラ内で発生している特定のインスタンスを取得することができますか?

〜E

答えて

0
protected void AsyncFileUploadComplete(object oSender, AsyncFileUploadEventArgs e) 
{ 
    try 
    { 
     AsyncFileUpload oFileUploadControl = GetFileUploadInstance(ContainerId, (AsyncFileUpload)oSender); 
    } 
    catch (exception ex) 
    { 
    } 
} 

private AsyncFileUpload GetFileUploadInstance(Control oContainer, AsyncFileUpload oSender) 
{ 

    // Place all of your popup controls in a global container, look for the sender as a child control 
    foreach (Control oControl in oContainer.Controls) 
     if (oControl.Controls.Count != 0 && oControl.FindControl("m_afuFileUpload") == oSender) 
      return (AsyncFileUpload)oControl; 

    return new AsyncFileUpload(); // || throw new Exception("Could not find ASyncFileUpload Instance"); 
} 
関連する問題