1Future Ответов: 1

Как триггерить серверный код из 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 для списка и повторно привязать элементы к каждому запросу, либо использовать пользовательский элемент управления.

1 Ответов

Рейтинг:
2

Laxmidhar tatwa technologies

$(документ).готово(функция () {
var select = $("#<%=lblMultiSelect.ClientID%>");
var senddata = select.val();
var txt = $("#<%=listBoxValue.ClientID%>"); //<<просто поместите id в текстовое поле здесь для целей тестирования

select.change(функция (e) {
$.Аякс({
тип: "почта",
URL-адрес: "КС.aspx-и GetCurrentTime",
данные: '{имя: "' + senddata + '" }',
contentType: "application/json; charset=utf-8",
тип данных: "json",
успех: OnSuccess,
отказ: функция(ответ) {
предупреждение(ответ.д);
}
});
});
});
функция OnSuccess(ответ) {
$.each(ответ, функция (i, el) {

// ваш код для listbox

});
}



//с фоновым кодом
[webmethod]
public void GetParent (int childID)
{
ВАР Р = DbContext можно.Стол.Где(x => x.Id == childId);
//затем автоматически выберите родителя здесь, не отправляя страницу назад?
}