FileUpload und UpdatePanel: ScriptManager.RegisterPostBackControl funktioniert das zweite mal

Entwickle ich eine ASP.NET Anwendung mit C# und Visual Studio 2008 SP1. Ich bin mit WebForms.

Ich habe eine ASPX-Seite mit zwei UpdatePanels, eine auf der linken, hält eine Strukturansicht und die andere auf der rechten Seite, wo ich die geladen werden dynamisch Benutzer-Steuerelemente.

Einem Benutzer die Kontrolle, dass ich auf der rechten Seite, hat ein FileUpload-Steuerelement und ein button zum speichern der Datei auf dem server. Die ascx-code zu speichern, Kontrolle ist:

<asp:UpdatePanel ID="UpdatePanelBotons" runat="server" RenderMode="Inline" 
    UpdateMode="Conditional">
<ContentTemplate>
    <asp:Button ID="Save" runat="server" Text="Guardar" 
                onclick="Save_Click" CssClass="button" />
    </ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID="Save" />
    </Triggers>
</asp:UpdatePanel>

Mache ich einen vollständigen postback zum hochladen der Datei auf den server und speichern Sie es auf der Datenbank. Aber ich immer Falsch auf FileUpload.HasFile.

Ich problem ist die richtige UpdatePanel. Ich brauche es Last dynamisch kontrolliert der Anwender. Dieses Gremium hat drei UpdatePanels zu laden die drei Bedienelemente, die ich benutze.

Vielleicht kann ich einen Asynchronen Datei-Uploader, zu löschen oder die richtige Update-Panel und führen Sie einen vollständigen postback zum laden von Steuerelementen dynamisch.

Irgendwelche Ratschläge?

UPDATE:

RegisterPostBackControl funktioniert... das zweite mal, dass ich klicken Sie auf die Schaltfläche speichern. Ersten mal FileUpload.HasFile FALSCH ist, und das zweite mal, dass ist WAHR.

Zweite Update

Auf der ersten klicken Sie auf ich auch überprüfen, ScriptManager.IsInAsyncPostBack und FALSCH ist. Ich verstehe nicht, NICHTS!!!

Warum?

Den code zum laden der Benutzer-Steuerelement ersten mal, und auf jedem postback ist:

DynamicControls.CreateDestination ud =
            this.LoadControl(ucUrl) as DynamicControls.CreateDestination;
if (ud != null)
{
    Button save = ud.FindControl("Save") as Button;
    if (save != null) 
        ScriptManager1.RegisterPostBackControl(save);
    PanelDestination.Controls.Add(ud);
}

Danke.

  • Bump. Sie sollten akzeptieren, eine dieser Antworten.
InformationsquelleAutor VansFannel | 2010-02-15
Schreibe einen Kommentar