2008-11-19 6 views
1

J'utilise la fonction d'extension de saisie semi-automatique pour obtenir la liste des suggestions de ma base de données. Il n'y a pas de barre de défilement pour ce contrôle, donc j'ai ajouté une barre de défilement dans un panneau (MS .net 2.0) que je joins à mon extender autocomplete. Maintenant, le problème est avec la barre srcoll. comme celui-ciBarre de défilement disparaissant lors de l'utilisation Extenseur de saisie semi-automatique

<asp:Panel ID="autocompleteDropDownPanel" runat="server" ScrollBars="Auto" Height="100px" HorizontalAlign="Left" /> 

et l'ajouter à autocompete extension comme celui-ci

:CompletionListElementID="autocompleteDropDownPanel" 

Quand j'appelle ma page, je reçois la liste des suggestions et la barre de défilement apparaît. Lorsque je clique sur la barre de défilement ou que j'essaie de faire glisser, tout disparaît.

Est-ce que je fais quelque chose de mal? Existe-t-il un autre moyen d'ajouter une barre de défilement à mon contrôle d'extension automatique?

Tous les conseils seraient très utiles.

+0

L'autre question a été fermée, donc j'ai rouvert celui-ci. –

+0

offensive? celui qui a marqué cela n'a pas été utile .. – warren

Répondre

1

Cela ne répond pas directement à votre question - mais je vous demanderais si vous êtes sûr que l'extension automatique est le meilleur contrôle à utiliser dans ce scénario. D'un point de vue de la convivialité, l'avantage de la saisie semi-automatique est que je peux saisir 3-4 caractères, voir quelques entrées disponibles et les sélectionner facilement en utilisant le clavier en appuyant sur quelques touches du clavier.

Si vous affichez plus d'éléments dans la liste de saisie semi-automatique que ce qui peut être facilement affiché à l'écran, je ne suis pas sûr que le correctif consiste à ajouter une barre de défilement.

Dans notre scénario, nous avions une liste de 2800 noms qui étaient disponibles dans la saisie semi-automatique. Nous avons limité le nombre affiché à 20, mais défini MinimumPrefixLength à 1. Cela signifiait que lorsque l'utilisateur tapait un caractère, il voyait une liste de saisie semi-automatique qui lui permettait simplement de savoir que la zone de texte dans laquelle il tapait avait cette capacité. La liste des résultats dans la liste ne devient vraiment utile qu'une fois que l'utilisateur a entré 3-4 caractères.

1

J'ai un problème similaire semble qu'il n'a pas été résolu.

En cliquant sur la barre de défilement AutoCompleteExtender provoque la publication lorsqu'elle est attachée à un TextBox où AutoPostBack = "true".

Étapes pour reproduire:

  1. Ajouter une zone de texte à votre page ASPX avec AutoPostBack = "true".
  2. Ajoutez un AutoCompleteExtender et spécifiez le contrôle TextBox ci-dessus en tant que contrôle cible.
  3. Créez une nouvelle méthode de service Web et spécifiez ServicePath et ServiceMethod appropriés sur votre AutoCompleteExtender.
  4. Spécifiez tous les attributs appropriés sur votre AutoCompleteExtender comme vous le souhaitez afin que la saisie du texte affiche une liste déroulante.
  5. À partir de la méthode du service Web, assurez-vous de renvoyer un grand nombre d'éléments, afin que la liste déroulante AutoCompleteExtender affiche une barre de défilement.
  6. Cliquez ou tabulez dans le TextBox et tapez du texte afin que le menu déroulant (avec barre de défilement) s'affiche. Pour faire bonne mesure, essayez tout d'abord d'appuyer simplement sur la touche fléchée vers le bas jusqu'à ce que la liste déroulante commence à défiler toute seule. Cela fonctionne bien, pas de problème.
  7. Maintenant, au lieu de cliquer vers le bas, cliquez sur la barre de défilement et commencez à défiler.
  8. Doh! Tout d'un coup, il semble que le contrôle TextBox perd son focus, ce qui provoque naturellement le lancement du comportement AutoPostBack. Cela fait disparaître la liste déroulante et vous ne pouvez jamais faire défiler comme vous le souhaitiez.

Il semble que ce dont nous avons besoin est un moyen de désactiver temporairement le comportement AutoPostBack chaque fois que la liste déroulante est affichée ou peut-être juste quand une personne essaie de faire défiler. Peut-être que cliquer sur la barre de défilement pourrait définir une sorte de drapeau qui désactiverait l'AutoPostback, puis relâcher la souris le réactiverait. Je ne sais pas si c'est faisable, mais ce serait bien si quelqu'un avait une idée.

http://www.codeplex.com/AjaxControlToolkit/WorkItem/View.aspx?WorkItemId=15161

+0

Je viens de rencontrer ce problème et j'ai trouvé votre solution (ainsi que @wheelibin ci-dessus) et cela a résolu mon problème. Il semble qu'il y ait une meilleure approche à ce sujet. Merci pour la réponse détaillée. –

1

bien ce problème résolu en ce moment en studio visuel 2008 sp1 ajaxToolkit et vous pouvez provaid le défilement à la liste, mais l'édition du css de CompletionListCssClass mis

overflow:auto; 
height:60px; 
1

Je viens rencontré les mêmes symptômes lors de l'utilisation le AutoCompleteExtender dans ASP.NET 3.5 ..... c'était parce que j'avais AutoPostBack=True sur la zone de texte, éteindre cela a fait fonctionner la barre de défilement correctement.

(Je sais que ce n'est pas le même scénario que la question initiale, mais je trouve cela de Google tout en essayant de résoudre mon problème, il semblait approprié de poster ma solution.)

0

le clic sur la question scrollbar a été dans mon cas résolu en définissant AutoPostBack=false dans la zone de texte. Mais alors la fonctionnalité de l'AutoCompleteExtender avait disparu. En utilisant la propriété OnClientItemSelected je pouvais appeler une fonction javascript qui déclenchait une publication et tous les utilisateurs du navigateur IE étaient de nouveau heureux :-)

Questions connexes