【问题标题】:Auto Complete Extender With Hidden Value具有隐藏值的自动完成扩展器
【发布时间】:2009-09-14 08:54:19
【问题描述】:

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

【问题讨论】:

    标签: asp.net ajax autocomplete


    【解决方案1】:

    我不完全确定你的意思或你的水平是什么,所以这可能不是你要找的:

    当你(ajax?)调用服务器来获取描述列表时,你可能会得到一个普通字符串的普通列表,代表可能的描述。与其使用普通字符串,不如使用 JSON 之类的东西,在其中同时输入 id 和 name。然后,您可以使用类似

    的内容填写自动完成列表
    foreach(var obj in suggestions)
        addToList(obj.Name);
    

    在内存中的某处有一个包含原始建议的集合(如变量“建议”);当有人选择自动建议的项目时,您可以在原始数组中找到该项目。

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

    使用 id,您可以使用 PageMethods 或其他种类的 Ajax 东西对数据库进行新的调用。当使用 PageMethods (Google for exact 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 */);
    

    您现在可以在页面中的任意位置使用内容。

    【讨论】:

    • 目前我正在使用微软内置的 ASP.Net AJAX 附带的 AutoCompleteExtender 控件。我考虑过制作自己的 javascrpt 方法(使用 JSON),唯一的问题是我在更改页面和视图状态的控件时出错。
    • 我只使用pengoworks.com/workshop/jquery/autocomplete.htm 来做我在评论中所说的事情。它的可扩展性更强。
    猜你喜欢
    • 2013-05-21
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    相关资源
    最近更新 更多