2009-04-06 6 views
2

J'écris une application ASP.NET MVC et j'ai un formulaire dans lequel un utilisateur peut entrer un ou plusieurs numéros de pièces utilisés pour résoudre un problème. La plupart du temps, ils connaissent le numéro de pièce et peuvent le taper. Parfois, cependant, ils ont besoin d'aide supplémentaire.Quelle est la meilleure façon de permettre à un utilisateur de faire une recherche dans une grande liste sur une page Web?

La table des références comporte plus de 50 000 éléments, ce qui est beaucoup trop important pour une liste déroulante. De plus, la sélection prend du temps, donc je ne sais pas si une saisie semi-automatique est aussi bien ici.

Quelles sont d'autres suggestions sur ce que je peux faire pour rendre cet utilisateur convivial?

Répondre

2

Je voudrais utiliser la boîte de saisie semi-automatique + cache côté serveur ajouté sur les numéros de pièce (de sorte que vous ne serez pas besoin de les prendre à partir de Db à chaque fois, seulement lorsque les dossiers ont été mis à jour). De cette façon, cela devrait fonctionner assez vite.

Caching in ASP.NET with the SqlCacheDependency Class

Avec cette paix jQuery de code que vous pouvez filtrer les lettres qui entrées utilisateur dans votre boîte « saisie semi-automatique ».

$(function() { 
    $.isShiftDown = false; 
    $('input#partName').keydown(function(e) { 
     if (e.keyCode == 16) $.isShiftDown = true; 
     if ($(this).val().length == 0 && (e.keyCode == 188 || 
      e.keyCode == 189)) return false; 
     return ($.inArray(e.keyCode, [8, 13, 35, 36, 37, 39, 46, 48, 49, 50, 
      51, 52, 53, 54, 55, 56, 57, 188, 189]) > -1 && !$.isShiftDown) 
      || (e.keyCode > 64 && e.keyCode < 91); 
    }).keyup(function(e) { if (e.keyCode == 16) $.isShiftDown = false; }); 
}); 

(remplacer ces chiffres avec le vôtre, qui correspondent aux permis caractères exemple e.keyCode == 16 est une touche SHIFT, 64 - 91 codes sont des lettres de A à Z)

1

Vous pouvez appliquer un filtre sur le jeu de résultats après une pression sur une touche. De cette façon, vous n'appelez pas la base de données à chaque fois, et le jeu de résultats filtrera sur ce que l'utilisateur a tapé.

1

Ce que d'autres ont dit, avec en plus que lorsque vous traitez de grandes listes, vous n'avez pas besoin de démarrer votre autocomplétion jusqu'au filt er est au moins 2 ou 3 caractères.

2

Quelques idées:

  • pour vos gammes Fournir les références dans un menu déroulant. Utilisez d'autres catégories que la partie pour affiner la recherche.
  • Utilisez la saisie semi-automatique avec un filtre.
1

Ce dont vous avez vraiment besoin, c'est d'une fenêtre contextuelle qui permet à l'utilisateur d'entrer des critères sur la pièce et de faire la requête par rapport à la base de données. Catégorie, ou nom de partie, numéro de partie partiel, etc. Un seul champ de zone de liste déroulante n'est probablement pas assez riche pour permettre à l'utilisateur d'exprimer ce qu'il sait de la pièce afin de réduire le nombre de pièces par rapport à un formulaire. plusieurs champs.

Fondamentalement, placez un sélecteur modal avec les critères de filtre spécifiés par l'utilisateur. Mettez un peu de loupe ou quoi que ce soit à côté du champ pour le faire apparaître. Faites en sorte que le formulaire apparaisse vide, sans résultats au début, puis l'utilisateur peut réduire les choses.

Questions connexes