J'utilise la version Nov de AjaxControlToolkit, et j'ai trouvé une erreur de logique, mais j'essaie de trouver la meilleure façon de résoudre ce problème. , d'ici samedi, afin que le programme fonctionne sur IE.AsyncFileUpload a une erreur de logique dans AjaxControlToolkit, quand le composant dans un onglet différent, donc pas affiché
Ce problème a seulement une erreur sur IE, il fonctionne sur Firefox3.5.
J'ai un composant AsyncFileUpload sur un onglet qui semble ne pas être visible lorsque cette fonction s'exécute, et donc la largeur du décalage est zéro.
Le problème est dans le fichier AsyncFileUpload.pre.js
, en fonction _app_onload
, et cette ligne: this._innerTB.style.width = (this._inputFile.offsetWidth - 107) + "px";
Je ne veux pas le compiler à partir de la source, mais cela peut finir par être ma meilleure option, donc je peut corriger l'erreur.
Mais, cela va probablement être mon fix: this._innerTB.style.width = ((this._inputFile.offsetWidth == 0) ? 200 : this._inputFile.offsetWidth) - 107) + "px";
Mais, je ne sais pas s'il y a une meilleure solution.
Je pourrais juste écrire une nouvelle fonction de prototype dans ma classe de javascript et corriger juste l'erreur de logique, qui est meilleure que la recompilation. Si je le répare dans le code, chaque fois que je ferai une mise à jour, je devrai continuer à remplacer cette ligne, jusqu'à ce qu'elle soit corrigée dans la base de code. Mais, j'essaie de comprendre si un élément peut savoir qu'il est devenu visible, car à chaque fois que vous avez besoin de connaître la largeur réelle d'un élément, vous ne pouvez pas vraiment le configurer. jusqu'à ce qu'il soit affiché. Je ne peux pas penser à un moyen de le savoir, donc ce que j'ai tendance à faire est de corriger les éléments sur l'onglet la première fois que l'onglet est sélectionné, mais, pour une bibliothèque générique qui n'est pas une solution possible.
Lieu de la question principale
Alors, avant de l'envoyer dans un rapport de bogue sur ce que je suis curieux de savoir s'il est une meilleure façon de le faire, plutôt que de l'avoir fait lorsque la page a été chargé, et en supposant une largeur minimale qui est probablement faux. < - Question situé ici
J'utilise le code de suivi pour créer l'élément:
<cc1:AsyncFileUpload ID="AsyncFileUpload1" runat="server"
OnClientUploadError="uploadError" OnClientUploadStarted="StartUpload"
OnClientUploadComplete="UploadComplete"
CompleteBackColor="Lime" UploaderStyle="Modern" Width="400px"
ErrorBackColor="Red" ThrobberID="Throbber"
onuploadedcomplete="AsyncFileUpload1_UploadedComplete"
UploadingBackColor="#66CCFF" />
Et si cela fait une différence que je me sers de ce que le ToolkitScriptManager semblait introduire d'autres erreurs, mais qui peuvent ont été mon erreur:
<ajax:AjaxScriptManager ID="scriptmanager1" runat="server" EnablePartialRendering="true" ></ajax:AjaxScriptManager>
Je ne suis pas certain si LoadScriptsBeforeUI
serait utile, mais je crois que je veux l'interface utilisateur fait avant que les scripts sont chargés en fait.
Je trouve intéressant que la largeur que je définis ne soit pas réellement définie lorsque l'arbre dom est terminé.
Merci, je n'ai pas essayé Ceci, et je ne travaille plus sur ce projet, mais cela ressemble à une bonne réponse. –
Je ne sais pas si c'est ce que vous voulez, parfois vous voulez charger des scipts après l'interface utilisateur, donc cela pourrait gâcher le contrôle sur le chargement de la page ... La solution de Bat_Programmer (dans ce fil) a fonctionné pour moi. – Flo