У меня есть таблица, которая содержит 2 выпадающих. Вы можете предположить, что родитель и ребенок. Также у меня есть веб-метод для фильтрации дочерних выпадающих опций в соответствии с родительским значением. Все собранные входы у меня есть событие нажатия кнопки, которое делает сервисный вызов. Если служба выдает ошибку, для моего дочернего раскрывающегося значения устанавливается значение «000» в функции jquery. Чтобы предотвратить это, я назначаю значение сеанса ErrorOccured. Если есть ошибка, я устанавливаю ее значение true, иначе false. Теперь, если я получаю ошибку при вызове службы, значение раскрывающегося дочернего элемента остается тем же. Но мое значение ErrorOccured всегда верно. Я не мог изменить его значение, потому что page_load не происходило при совершении вызова ajax. Таким образом, если из родительского раскрывающегося списка выбран другой параметр, я не могу установить значение дочернего раскрывающегося списка в «000». Как я могу решить его?
function filterTutarAlani(id, obj) {
var element = getCell("parentDropdown");
var dropdownValue = $('#' + element.id + ' option:selected').val().trim();
$.ajax({
type: "POST",
url: '<%=ResolveUrl("test.aspx")%>' + '/ParentDropdownSelectedIndexChanged',
data: JSON.stringify({ value: dropdownValue}),
contentType: "application/json; charset=utf-8",
dataType: "json",
asyn: false,
success: function (status) {
changeStatus = status.d;
var drpChild= getCell("childDropdown");
var selectedTutarAlani = $('#' + drpChild.id + ' option:selected').val().trim();
var selectList = getSelector(drpChild, "parentDropdown");
for (var i = selectList.options.length - 1 ; i > 0 ; i--) {
selectList.remove(i);
}
var errorOccured = false;
for (var i = 0; i < status.d.length ; i++) {
var option = document.createElement("option");
option.value = status.d[i].Name;
errorOccured = status.d[i].Error;
selectList.appendChild(option);
}
if (errorOccured == true) {
selectList.value = selectedTutarAlani;
}
else {
selectList.value = "000";
}
}
});
[WebMethod(EnableSession = true)]
public static List<TestValues> ParentDropdownSelectedIndexChanged(string value)
{
var amounts = new List<TestValues>();
amounts = HttpContext.Current.Session["ChildValues"] as List<TestValues>;
var error= (bool) HttpContext.Current.Session["ErrorOccured"];
amounts .Select(c => { c.Error= error; return c; }).ToList();
return amounts;
}