2009-11-17 4 views
0

Je travaille sur un formulaire long et dynamique (une centaine de champs) et j'utilise des éléments de la boîte à outils tels que CalendarBehaviors, HovermenuBehavior, etc. pour chaque champ.Ajax Toolkit Client Rendu

Je n'ai jamais travaillé avec autant d'éléments de toolkit à la fois, et je constate un grand impact sur les performances de rendu. Chaque instance d'un contrôle de boîte à outils est envoyée au client dans ses propres balises <SCRIPT></SCRIPT>. En d'autres termes, 200 cas de oici:

<SCRIPT type="text/javascript"> 
Sys.Application.add_init(function() { $create(AjaxControlToolkit.HoverMenuBehavior, {"OffsetX":20,"PopDelay":50,"dynamicServicePath":"/default.aspx","id":"hmePopupHelpPolicyNumber","popupElement":$get("lblHelpPolicyNumber")}, null, null, $get("imgHelpPolicyNumber"));}); 
</SCRIPT> 
<SCRIPT type="text/javascript"> 
...snip 
</SCRIPT> 

est-il un moyen de contrôler cela et que tous les contrôles créés dans un seul bloc de script?

En outre, quelqu'un connaît-il un bon article détaillé décrivant comment IE 7 analyse et rend html et javascript?

Et je sais que la plupart d'entre vous recommanderont plutôt JQuery. Malheureusement, ce n'est pas une option dans ce projet.

Merci d'avance et heureux codage.

Répondre

0

En suivant les lignes de la réponse de @Achilles, je diviserais le formulaire en plusieurs pages. Vous pouvez également essayer une page avec plusieurs onglets.

Mise à jour: Une autre chose qui pourrait vous aider est le ToolkitScriptManager. Il combine tous les scripts de la boîte à outils externe en un seul script externe. Je pense qu'il combine également tous les scripts de la boîte à outils en ligne en un seul bloc.

+0

Merci Achilles et JRummel. J'ai joué avec quelques idées (onglets, MVC) mais le formulaire est utilisé par les personnes qui vont remplir des formulaires personnalisés (un événement de changement de liste déroulante crée un formulaire pour un bureau différent) Part du problème est que je dois remettre ceci à un groupe plus vert de promoteurs à maintenir. J'essaie de m'en tenir à ce qu'ils savent, à savoir Ajax Toolkit et Webforms et d'essayer d'écrire le montant minimum de JS. Ma question implique est-il un moyen d'optomize comment la boîte à outils et d'autres contrôles .NET (Validators) émettent leurs scripts – Frank

+0

Jetez un oeil à mon édition pour un tour différent sur ma réponse. – Achilles

+0

Merci Achille. Les utilisateurs peuvent tabuler entre les champs et entrer sans la souris (j'ai les contrôles de calendrier attachés aux boîtes de texte, etc.) Une fois le formulaire chargé, l'entrée est très rapide. Le problème est que chaque champ nécessite une aide contextuelle, une validation, etc. J'ai examiné la possibilité d'avoir un contrôle de type assistant (3 étapes) ou tabulations, mais 3 étapes à 2 secondes contre 6 secondes pour une seule page ... pas beaucoup différence. J'ai eu un prototype MVC qui a eu de bonnes performances, mais MVC est une étape trop importante pour mon chef d'équipe. Donc je suppose que je suis coincé avec ce modèle. J'essaie juste de faire tout son possible pour l'optimiser. – Frank

1

Je dirais repenser votre conception de la page. Que de nombreux éléments sur votre page ne peuvent pas faire une bonne expérience utilisateur. Au lieu de coder une solution vraiment éloignée, reconsidérez votre conception et cela profitera probablement à votre utilisateur à la fin.

Editer: Votre question est au cœur de ce que beaucoup considèrent comme l'inconvénient majeur de l'utilisation de WebForms. Il y a peu de contrôle sur la façon dont le serveur rend les contrôles et émet leur code HTML. Sans une approche plus «avancée» que vous essayez d'éviter, il me serait difficile de suggérer autre chose que de briser la forme en plus petits morceaux. S'il s'agit d'un formulaire de saisie de données, il peut être plus rapide pour l'utilisateur de saisir les champs de date plutôt que de remplir le formulaire via des clics de souris.

Questions connexes