Как триггерить серверный код из javascript/jquery в ASP.NET веб-формы
Привет,
В моем проекте есть список, в котором перечислены некоторые значения, которые я извлекаю из базы данных. Значения имеют родительские i'D, связанные с ними, и перечислены в списке, как показано ниже:
Великобритания(родитель)
Лондон(ребенок)
Манчестер(Ребенок)
США(родитель)
Нью-Йорк(ребенок)
Флорида(ребенок)
Что я хотел бы сделать , так это то, что когда пользователь выбирает ребенка, то родитель должен быть автоматически выбран. то есть, когда вы выбираете Лондон, я хочу, чтобы Великобритания была автоматически выбрана. А также я хотел бы сделать это без обратной публикации страницы, поэтому я хочу сделать это в JavaScript/ jquery
Пожалуйста, посмотрите, что я сделал до сих пор ниже:
Что я уже пробовал:
Разметка
<asp:ListBox runat="server" ID="lblMultiSelect" SelectionMode="multiple" CssClass="inputText" AutoPostBack="false" >
Язык JavaScript
Вот как я получаю дочернее значение в качестве идентификатора:
$(document).ready(function () { var select = $("#<%=lblMultiSelect.ClientID%>"); var txt = $("#<%=listBoxValue.ClientID%>"); //<<just putting id to a textbox here for testing purposes select.change(function (e) { var result = ""; var options = select.children("option:selected"); $.each(options, function (i, el) { result += $(el).val(); if (i < options.length - 1) { result += ","; } }); txt.val(result); }); })
//С фоновым кодом
Вот тут я и застрял.. я имею в виду, что знаю, как запрашивать БД с помощью c#, но я просто не уверен, как я могу передать идентификатор из функции javascript в метод c#.
Нужно ли мне иметь что-то подобное:
public void GetParent (int childID) { var p = dbcontext.Table.Where(x => x.Id == childId); //then auto select the parent here without posting the page back? }
Как бы я поступила в этом случае? я надеюсь, что это имеет смысл
и спасибо за ваше время
F-ES Sitecore
Добавьте веб-сервис (файл asmx), и вы можете вызвать его из своего кода
https://forums.asp.net/t/1934215.aspx?Using+библиотека jQuery+Ajax с+к+телефону+asmx веб+веб-сервис+методы
Обратите внимание, что любые обновления компонентов в результате должны быть сделаны из вашего js-кода, кроме того, вы не можете манипулировать элементами управления из веб-сервиса, как вы можете управлять файлом кода.
Richard Deeming
Я был бы склонен полностью игнорировать серверную сторону и найти способ идентифицировать родительский элемент списка на клиенте.
Самым простым вариантом было бы добавить CSS-класс к родительским элементам или использовать data-
атрибуты для каждого элемента. Но, к сожалению, элемент управления не сохраняет и не воссоздает пользовательские атрибуты при обратной публикации страницы. Вам нужно будет либо отключить ViewState для списка и повторно привязать элементы к каждому запросу, либо использовать пользовательский элемент управления.