3

C#の背後にあるコードから作成された複数のasyncfileuploadコントロールがあり、コードのUploadedCompleteセクションから適切なコントロールインスタンスを参照する方法、またはそのことに関するインスタンスを理解できません。

1ページで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

4

1 に答える 1

1
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");
}
于 2012-10-23T21:32:30.167 に答える