J'utilise jQuery AutoComplete, et j'ai une boîte de recherche auto-complétée pour rechercher des utilisateurs.jQuery AutoComplete - Retourne plusieurs valeurs
Default.aspx
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$("#<%= txtUser.ClientID %>").autocomplete('UsersAutoComplete.ashx');
});
</script>
<asp:TextBox ID="txtUser" runat="server" />
UsersAutoComplete.ashx
public class UsersAutoComplete : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
List<User> users = DataContext.Users
.Where(u => u.Username.StartsWith(context.Request.QueryString["q"]))
.Take(Int32.Parse(context.Request.QueryString["limit"]))
.OrderBy(u => u.Username)
.ToList();
foreach (User user in users)
{
context.Response.Write(user.Username + Environment.NewLine);
}
}
public bool IsReusable
{
get { return false; }
}
}
Comme vous pouvez le voir, il renvoie uniquement le nom d'utilisateur. J'aimerais également retourner l'ID utilisateur de l'utilisateur. Les résultats afficheront toujours seulement une liste de noms d'utilisateur, mais quand quelqu'un sélectionne un utilisateur, je voudrais stocker le userid pour cet utilisateur dans une valeur cachée de sorte que je puisse faire tout ce dont j'ai besoin avec lui. Je vais lancer une requête sur l'utilisateur sélectionné, et je préfère chercher l'utilisateur par UserID que par nom d'utilisateur.
Existe-t-il un moyen de le faire?
Merci, ça me permet d'être à mi-chemin. Mais où est le UserID stocké pour chaque utilisateur dans les résultats? En tant que classe pour chaque li? Et comment puis-je le stocker? – Steven
Eh bien, vous créez une classe avec un nom d'utilisateur et une propriété userid. Retournez ensuite la classe sérialisée au code de saisie semi-automatique. Cela va le sérialiser. Vous pouvez dire autocomplete que les données qui reviennent est JSON. Ensuite, utilisez simplement les propriétés comme vous le feriez normalement. Laissez-moi mettre dans l'exemple. – spinon
Je peux gérer le retour d'un résultat JSON, ma confusion est ce qu'il faut faire sur le front-end après avoir obtenu ces données. J'ai besoin d'un moyen de relier chaque élément dans les résultats avec un UserID, mais je ne sais pas comment. – Steven