Самый простой способ - использовать 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>