Ich entwickle eine ASP.NET-Anwendung mit C# und Visual Studio 2008 SP1. Ich verwende WebForms.FileUpload und UpdatePanel: ScriptManager.RegisterPostBackControl funktioniert das zweite Mal
Ich habe eine ASPX-Seite mit zwei UpdatePanels, eine auf der linken Seite, die eine TreeView enthält und andere auf der rechten Seite, wo ich dynamisch Benutzersteuerelemente laden.
Ein Benutzer-Steuerelement, das ich auf der rechten Seite verwendet habe, verfügt über ein FileUpload-Steuerelement und eine Schaltfläche zum Speichern dieser Datei auf dem Server. Die ascx Code Steuerung zu speichern 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>
ich eine volle Postbacks, um die Datei auf den Server zu laden und es zu Datenbank speichern. Aber ich bekomme immer falsch auf FileUpload.HasFile.
I Problem ist das richtige UpdatePanel. Ich brauche es, um die Benutzersteuerelemente dynamisch zu laden. Dieses Panel verfügt über drei UpdatePanels zum Laden der drei Benutzersteuerelemente, die ich verwende.
Vielleicht kann ich einen Async File Uploader verwenden oder das richtige Update Panel löschen und ein komplettes Postback ausführen, um die Steuerelemente dynamisch zu laden.
Irgendwelche Ratschläge?
UPDATE:
RegisterPostBackControl
arbeitet ... das zweite Mal, dass ich Schaltfläche Speichern klicken Sie auf. FileUpload.HasFile ist zum ersten Mal FALSE und das zweite Mal ist TRUE.
zweite Update
Auf den ersten Klick ich überprüfen ScriptManager.IsInAsyncPostBack auch und ist FALSCH. Ich verstehe nichts !!
Warum?
Der Code Benutzerkontrolle erstes Mal zu laden, 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 eine dieser Antworten akzeptieren. –