У меня есть автоматический расширитель на моей веб-странице, который при вводе получает адресную информацию из базы данных. Мне нужно сделать два обращения к базе данных: один, чтобы получить список кратких описаний адресов, и другой, чтобы получить всю информацию об адресе после выбора описания адреса. Чтобы сделать второй звонок, я получаю уникальный идентификатор от первого звонка (если это имеет смысл). На данный момент у меня есть автоматический расширитель, который, когда я ввожу информацию об адресе, возвращает список описаний, и это нормально, но у меня нет возможности вернуть уникальный идентификатор (который я не хочу показывать пользователю) . Есть ли способ передать уникальный идентификатор в веб-службе так, чтобы пользователь его не видел?
Auto Complete Extender со скрытой ценностью
Ответы (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 */);
Теперь вы можете использовать контент в любом месте на странице.