具有隐藏价值的自动完成扩展器

时间:2009-09-14 08:54:19

标签: asp.net ajax autocomplete

我的网页上有一个自动完成扩展程序,输入时会从数据库中获取地址信息。我需要对数据库进行两次调用,一次是获取地址简要描述的列表,另一次是在选择地址描述后获取所有地址信息。为了进行第二次通话,我从第一次通话中获得一个唯一的ID(如果这是有意义的话)。到目前为止,我有一个自动完成扩展程序,当我输入地址信息时会拉回描述列表,这很好,但我无法传回唯一ID(我不想向用户显示) 。无论如何在没有用户看到的情况下传回Web服务中的唯一ID?

1 个答案:

答案 0 :(得分:0)

我不完全确定你的意思或你的等级是什么,所以这可能不是你想要的:

当您对服务器执行(ajax?)调用以获取描述列表时,您可能会获得表示可能描述的普通字符串的简单列表。使用像JSON这样的东西,而不是使用普通字符串,你可以在其中放入id和名称。然后你可以使用像

这样的东西来填充自动填充列表。
foreach(var obj in suggestions)
    addToList(obj.Name);

在内存中的某个地方有一个原始建议的集合(如变量'advice');当有人选择自动提示的项目时,您可以在原始数组中找到该项目。

foreach(var obj in suggestions)
    if(obj.Name == document.getElementById('suggestionTextbox').value) return obj.id;

使用id,您可以使用PageMethods或其他类型的Ajax内容对数据库进行新的调用。使用PageMethods(Google for def def。)时,请使用以下内容:

public static object GiveExtraInfo(string id)
{ //look up data in database and return the required object }

然后您可以使用JavaScript

var content = PageMethods.GiveExtraInfo(/*the id you selected before */);

您现在可以在页面中随意使用内容。