Вам не нужно отправляться в оба конца на сервер для каждого отдельного изменения в хорошо спроектированных компонентах, клиент должен иметь возможность обрабатывать большинство ситуаций, за исключением тех, когда сервер должен немедленно проверить данные.
То, что анти-паттерн всего требует обратной передачи или использования ленивой версии .NET ajax (когда сервер работает с крошечными битами, такими как, например, добавление элементов в комбо), вообще не годится, и JavaScript должен сделать эти простые задачи.
Я загрузил исходный код для ComboBox ajaxcontroltoolkit и, к сожалению, у меня нет хорошего интерфейса JavaScript.
Вы можете попробовать отключить обратную передачу и использовать что-то вроде:
<script type="text/javascript">
function addItemToDumbComboBox(cb, text)
{
/* Based upon Combobox.pre method initializeOptionList() */
// create the new list item
var child = document.createElement('li');
child.innerHTML = text;
cb.get_optionListControl().appendChild(liItem);
// add the item to the internal collection
var item = { text: text.trim(); };
Array.add(cb._optionListItems, item);
// style the ListItem with default skin
cb.initializeOptionListItem(child);
}
addItemToDumbComboBox(document.getElementById("cbCompany"), "new item #1");
addItemToDumbComboBox(document.getElementById("cbCompany"), "new item #2");
addItemToDumbComboBox(document.getElementById("cbCompany"), "new item #3");
</script>
... и посмотрим, что произойдет. Обратите внимание, что я на самом деле не тестировал этот код, это всего лишь пример.
Кстати, я рекомендую вам перейти к реализации комбинированного списка с приличным интерфейсом JavaScript.
Когда сервер выполняет всю работу, это все равно, что покупать тостер и каждый завтрак отправлять его на фабрику вместе с двумя кусками хлеба, чтобы они выпили за него и вернули его вам с тостами ... это глупость, но не вините себя, это распространенный антишаблон ASP.NET.
Надеюсь, что это помогает, и Бог благословит!