ASP.Net Автозаполнение поля на основе других полей - PullRequest
0 голосов
/ 15 ноября 2010

Я только что перешел на веб-разработку и мне нужно знать, как я могу реализовать требования ниже, используя asp.net и vb.net.

У меня есть три поля в форме, которые заполняются пользователями.Основываясь на этих трех значениях, мне нужно автоматически заполнить 4-е поле.Я планировал реализовать это следующим образом:

  1. Создать отдельный файл класса с функцией для вычисления возможных значений для 4-х полей на основе 1-го 3-х входов.Эта функция может возвращать где-то между 1-10 значениями.Поэтому я решил использовать раскрывающийся список для 4-го поля и позволить пользователям выбирать подходящее значение.

  2. Вызовите вышеуказанную функцию в функции onchange 3-го поля и возьмите и используйтевернуть значения, чтобы заполнить 4-е поле.Я планирую получить возвращаемые значения в поле массива. ( Нужна ли эта запись назад? )

Пожалуйста, дайте мне знать, как, если есть лучший способреализовать это.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 15 ноября 2010

Вы можете рассмотреть возможность сделать это с Javascript.Вы можете легко читать и контролировать поля с помощью чистого Javascript или хорошей библиотеки, например jQuery (моя любимая).Если вы сделали это таким образом, постбэк не потребовался бы, и 4-е поле обновилось бы немедленно.(Приятно для ваших пользователей)

Вы также можете сделать это с ASP.NET по большей части."onchange" в ASP.NET все еще требует Javascript, насколько я знаю, он просто делает некоторые из них для вас.Когда вы что-то измените, обязательно произойдет постбэк.

0 голосов
/ 15 ноября 2010

Самый простой способ - использовать jQuery для пользовательского интерфейса (таким образом, вам не нужно беспокоиться о длинном, сложном javascript и иметь дело с совместимостью с браузером, о котором он уже позаботился для вас) и вызывать его на сервере данные. Для сервера самый простой способ - вернуть JSON для зацикливания значений.

Включите ваш jQuery:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>

Затем добавьте дескриптор для JavaScript:

<script type="text/javascript">
function autoPopulate() {
   var value1 = $('#ddl1').val();
   var value2 = $('#ddl2').val();
   var value3 = $('#ddl3').val();
   var url = 'path/to/your/file.aspx?value1=' + value1 + '&value2=' + value2 + '&value3=' + value3;
   $.getJSON(url, function(data) {
      data == null ? return false : data = eval(data);
      var ddl = $('#ddl4')[0];
      for (i = 0; i < data.length; i++) {
         var option = new Option(data[i][0], data[i][1]);
         if ($.browser.msie) {
            ddl.add(option);
         } else {
            ddl.add(option, null);
         }
      }
   }
}
</script>

(Да, я знаю, что использовал собственный цикл, но сегодня я немного ленивый :))

Теперь для вашего серверного кода вы хотите, чтобы ваш код возвращал данные вашей страницы в формате:

[['value1','text1'],['value2','text2'],['value3','value3']]

так что-то вроде:

<script type="vb" runat="server">
Private Sub Page_Init()
   // get your data
   // loop through it and add in values
   // ex.
   Dim result As String = "[" //start multi-dimensional array
   For Each Item As String In data
      result += String.Format("['{0}','{1}'],", _value, _text)
   Next
   result = result.SubString(0, result.Length - 1) // removes trailing comma
   result += "]" // closes off m-array
   Response.Write(result)
   Response.Flush()
End Sub
</script>
0 голосов
/ 15 ноября 2010

Вам нужен javascript или установить autopostback = true для элементов формы.

С точки зрения пользователя, лучше всего использовать javascript для заполнения поля для отображения, НО при отправке формы используйте ваш бэкэндфункция, чтобы проверить это.Это позволит убедиться, что пользователь не изменил значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...