2009-09-14 48 views
0

我的網頁上有一個自動完成的擴展程序,輸入時從數據庫獲取地址信息。我需要對數據庫進行兩個調用,一個是獲取地址的簡要描述列表,另一個是在選擇地址描述後獲取所有地址信息。要進行第二次通話,我會從第一個通話中獲得一個唯一的ID(如果這是有意義的)。到目前爲止,我有一個自動完成的擴展程序,當我輸入地址信息時,會拉回描述列表,這很好,但我無法傳回唯一ID(我不想向用戶顯示) 。反正有沒有用戶看到它在Web服務中傳回唯一ID?具有隱藏值的自動完整擴展程序

回答

0

我不能完全確定你的水平,你的意思是什麼,或者什麼,所以這可能不是你在找什麼:

做當你的(AJAX?)打電話到服務器以獲取列表描述,你可能會得到一個普通字符串的簡單列表,表示可能的描述。除了使用普通的字符串,使用類似JSON,你把兩個編號和姓名,然後您可以填寫你的使用的東西自動完成列表像

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(谷歌的確切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 */); 

現在,您可以等。無論您在頁喜歡使用的內容。

+0

目前我正在使用ASP.Net AJAX附帶的AutoCompleteExtender控件中內置的Microsofts。我想過製作我自己的javascrpt方法(使用JSON)唯一的問題是我在更改頁面和視圖狀態的控件時遇到了錯誤。 – 2009-09-23 12:38:01

+0

我一個人使用http://www.pengoworks.com/workshop/jquery/autocomplete.htm做一些事情,就像我在評論中所說的那樣。它的方式更具可擴展性。 – 2009-09-23 12:52:39