Auto Complete Extender со скрытой ценностью

У меня есть автоматический расширитель на моей веб-странице, который при вводе получает адресную информацию из базы данных. Мне нужно сделать два обращения к базе данных: один, чтобы получить список кратких описаний адресов, и другой, чтобы получить всю информацию об адресе после выбора описания адреса. Чтобы сделать второй звонок, я получаю уникальный идентификатор от первого звонка (если это имеет смысл). На данный момент у меня есть автоматический расширитель, который, когда я ввожу информацию об адресе, возвращает список описаний, и это нормально, но у меня нет возможности вернуть уникальный идентификатор (который я не хочу показывать пользователю) . Есть ли способ передать уникальный идентификатор в веб-службе так, чтобы пользователь его не видел?


person Jack Mills    schedule 14.09.2009    source источник


Ответы (1)


Я не совсем уверен, что вы имеете в виду или каков ваш уровень, так что это может быть не то, что вы ищете:

При выполнении вашего (ajax?) обращения к серверу для получения списка описаний вы, вероятно, получите простой список обычных строк, представляющих возможные описания. Вместо того, чтобы использовать простые строки, используйте что-то вроде JSON, где вы вводите как идентификатор, так и имя. Затем вы можете заполнить свой список автозаполнений, используя что-то вроде

foreach(var obj in suggestions)
    addToList(obj.Name);

Иметь коллекцию с исходными предложениями где-то в памяти (например, переменная 'suggestions'); и когда кто-то выбирает автоматически предложенный элемент, вы можете найти его обратно в исходном массиве.

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

С идентификатором вы можете сделать новый вызов базы данных, используя PageMethods или другие виды Ajax-вещей. При использовании PageMethods (Google для точного определения) используйте что-то вроде этого:

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 */);

Теперь вы можете использовать контент в любом месте на странице.

person Jan Jongboom    schedule 23.09.2009
comment
В настоящее время я использую Microsoft, встроенный в элемент управления AutoCompleteExtender, который поставляется с ASP.Net AJAX. Я думал о создании собственного метода javascrpt (с JSON), единственная проблема в том, что у меня были ошибки при изменении элементов управления на странице и в состоянии просмотра. - person Jack Mills; 23.09.2009
comment
Например, я использую pengoworks.com/workshop/jquery/autocomplete.htm для сделать что-то, как я сказал в моем комментарии. Это намного более расширяемо. - person Jan Jongboom; 23.09.2009