2009-12-30 3 views
0

У меня есть страница входа, где пользователь вводит имя пользователя (текстовое поле), пароль (текстовое поле) и местоположение (выпадающий список), а затем логин.Как установить выпадающий список по умолчанию selecteditem

На странице сервера для местоположения dropdonwlist У меня есть строка подключения для доступа к базе данных SQL Server, чтобы получить все местоположения из таблицы местоположений и связать данные с выпадающим списком.

Для выпадающего списка.SelectedItem, что я хочу сделать, так это то, что как только пользователь вводит имя пользователя, onChange, местоположение по умолчанию для конкретного пользователя должно быть выбранным местоположением до того, как пользователь нажмет на Login. Это местоположение по умолчанию определяется идентификатором местоположения (FK) в таблице входа, в котором в качестве столбцов указаны имя пользователя, имя пользователя, пароль и идентификатор местоположения. Я хочу, чтобы процесс получения идентификатора locationID (доступ к таблице DB) выполнялся на стороне сервера, затем передайте идентификатор location на клиентскую сторону, где я могу вызвать функцию, чтобы выбрать элемент dropdownlist по умолчанию в соответствии с идентификатором location. Каков способ сделать это? Благодаря

Язык программирования C# базы данных SQL Server 2005

ответ

2

Есть два способа сделать это: AJAX или Postback. AJAX был бы лучшим способом, и postback был бы более простым способом, это зависит от вас на самом деле ...

В обоих вариантах имя пользователя и запрос к базе данных будут удалены, чтобы получить идентификатор locationid, а затем выберите его из раскрывающегося списка ,

Логично, однако, это может быть дыра в безопасности (если не выполняется внутри), где хакер может генерировать произвольные имена пользователей и видеть, вернули ли они правильное местоположение, поскольку пароль не требуется. Это приводит меня к вопросу, почему вам нужно выбрать местоположение, если оно уже находится в db? Вы можете просто выбрать его при проверке пользователя ...

+0

«Почему вам нужно выбрать местоположение, если оно уже находится в db?» Мы хотим отслеживать, где находятся пользователи, обычно они будут находиться по умолчанию, но иногда они путешествуют. Тариф (например, налог) будет изменяться в зависимости от того, где они находятся в данный момент. – Akil

+0

А, я вижу. Я бы по-прежнему не рекомендовал автоматически выбирать местоположение. Вы можете добавить опцию «auto», которая должна быть по умолчанию и может быть изменена для «роуминг» пользователей. – Ariel

0

Я бы, вероятно, использовать JQuery, с помощью метода, который срабатывает при ONBLUR для коробки имени пользователя. Этот метод вызовет метод AJAX на вашей странице, чтобы получить идентификатор местоположения по умолчанию из базы данных.

В зависимости от того, какая версия .NET вы используете, вы можете использовать AjaxPro или ASP.NET AJAX Toolkit, чтобы опубликовать общедоступные методы. (Я нашел AjaxPro немного проще в использовании).

Тогда это просто вопрос написания на JQuery (. Очень грубый код здесь, я, вероятно, есть много вещей неправильно Если вы подвергаете метод с Ajax Toolkit)

function doSomething() 
    { 
     var username = $.("#textbox").val(); 

     $.ajax({ 
      type: "POST", 
      url: "default.aspx", 
      data: "username=" + username, 
      success: function(result){ 
       // Select the proper option here based on the result 
       $.("#dropdown").val(result); 
     } 
    }); 

} 

AjaxPro немного отличается, поскольку он генерирует JavaScript страницы, который вы можете вызвать, чтобы получить результат.

+0

Ваш код нуждается в некотором редактировании ... var username = $. ("# Textbox"). Val() ;, url не имеет имени метода, а данные должны быть json-объектом (" {'username': '"+ имя пользователя +"'} " Я знаю, что это всего лишь образец, но почему бы не сделать его рабочим образцом ... :) – Ariel

+0

Если это простой пост, он не обязательно должен быть JSON, но может быть строкой запроса. Вы обязательно захотите дезинфицировать его в методе на стороне сервера, прежде чем искать его в базе данных! – James

0

Что более тесно связано с «местом»: пользователем или компьютером?

Если это уместно, чтобы выбрать местоположение по умолчанию для компьютера вместо пользователя, вы могли бы рассмотреть возможность использования куков для хранения местоположения по умолчанию. Некоторые преимущества:

  • Не требуется javascript - выпадение по умолчанию выбрано сервером.
  • Одиночный запрос - значение cookie включено в запрос GET.

Было бы относительно легко реализовать с некоторыми оговорками:

  • Печенье области видимости (окна) учетной записи пользователя компьютера клиента. Если у вас есть два пользователя на одном компьютере (как один и тот же пользователь) с разными местоположениями, то это не очень хорошее решение.
  • Иногда в браузере выключены cookies.
Смежные вопросы