Le saviez-vous ? Certains contrôles ne sont pas compatibles avec UpdatePanel:
- TreeView et les contrôles Menu;
- Les contrôles Web Parts;
- FileUpload s'ils sont utilisés pour faire un upload de fichiers avec un PostBack asynchrone;
- GridView et DetailsView lorsque la propriété EnableSortingAndPagingCallbacks est true;
- Login, PasswordRecovery, ChangePassword et CreateUserWizard dont le Content n'a pas été converti en modèles éditables;
- Le contrôle Substitution;
- Les contrôles de validation.
En tout cas, je ne le savais pas avant de passer des heures à me tirer les cheveux pour comprendre ce qui n'allait pas dans ma page :) J'ai un WebForm avec des zones de saisie et un espace pour Upload de photos, tout marchait bien, mais dès que j'ai utilisé UpdatePanel j'ai obtenu l'erreur suivante:
Sys.WebForms.PageRequestManagerServerErrorException: Object reference not set to an instance of an object
La solution est la suivante: ajouter un PostBackTrigger sur le boutton qui déclenche l'Upload afin que ce boutton provoque un PostBack
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:FileUpload ID="fileUpload" runat="server" />
<br />
<asp:Button ID="cmdUpload" runat="server" Height="25px" OnClick="cmdUpload_Click" Text="Upload"
Width="128px" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="cmdUpload" />
</Triggers>
</asp:UpdatePanel>
L'Upload ensuite fonctionne correctement:
fileUpload.PostedFile.SaveAs(@"c:\test\" + System.IO.Path.GetFileName(fileUpload.PostedFile.FileName));
Response.Write n'est pas non plus compatible avec UpdatePanel, j'en parlerai dans un prochain post.
Aucun commentaire:
Enregistrer un commentaire