2010-11-15 4 views
0

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

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

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

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

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

Спасибо.

ответ

2

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

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

0

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

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

+0

спасибо. Я буду использовать javascript – Phoenix

0

Простым способом является использование 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

, спасибо большое. Я попробую это и дам вам знать. – Phoenix

Смежные вопросы