Создать постбэк в javascript

У меня есть флажок и раскрывающийся список (с первым элементом `` Все ''), например:

<td style = "width: 15px">
   <asp:CheckBox ID = "isAdvertiserFilter" runat = "server" AutoPostBack = "false"/>
</td>
<td style = "width: 330px">
    <asp:DropDownList ID = "AdvertiserFilterList" runat = "server" DataTextField = "Name" DataValueField = "Id" AutoPostBack = "true" Enabled = "false"/>
</td>

Флажок включает / выключает раскрывающийся список.

Если этот параметр включен, пользователь может выбрать любой элемент в списке (All, Item1, Item2 ...). Событие обрабатывается в коде позади:

this.AdvertiserFilterList.SelectedIndexChanged += new EventHandler(SearchFilter);

Итак, когда пользователь снимает флажок, я хочу, чтобы раскрывающийся список был установлен на «Все» и отключен. В моем javascript, когда я устанавливаю «Все» (значение -1, индекс 0), он не запускает событие кода позади для вызова моей функции SearchFilter.

$(document).on({
click: function (event) {
    if ($(event.target).is('#isAdvertiserFilter'))
    {
        // Enable or disable the dropdowlist
        $('select[id* = "AdvertiserFilterList"]').attr("disabled", !$('input[id* = "isAdvertiserFilter"]').prop("checked"));
        // When UNcheck
        if (!$('input[id* = "isAdvertiserFilter"]').prop("checked")) {
            // Set to the dropdownlist to All
            $('select[id* = "AdvertiserFilterList"]').val("-1");
            // Trying to fire the event
            $('select[id* = "AdvertiserFilterList"]').trigger("change");

        }
    }
},
});

Как вызвать мой код позади или вызвать событие, как если бы это сделал пользователь?

Я хочу выполнить PostBack только тогда, когда флажок не установлен (а не проверять) или когда раскрывающийся список SelectIndexChanged

Возможный дубликат Обратная передача ASP.NET с помощью JavaScript

Liam 29.11.2018 10:12

Вам нужно использовать __doPostBack

Liam 29.11.2018 10:13
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
62
2

Ответы 2

Вам нужно будет включить свойство Auto Postback из Visual Studio для любого элемента управления, который вы хотите вызвать исходным кодом.

Но будьте осторожны, события автоматической обратной передачи заставят вашу страницу загружаться снова. Если в вашей логике вы заполняете это поле со списком, вы потеряете выбранное значение и, вероятно, получите дублированный набор значений.

Чтобы исправить это, вам также необходимо поработать с переменной страницы isPostBack.

if (!isPostBack) {
 .. code to populate combo box
} else {
    .. code to handle user selection
}

Я бы хотел избежать обратной передачи для своего флажка только для включения флажка

Benoît 29.11.2018 10:18

Чтобы запускать PostBack всякий раз, когда я хотел, я все же установил для свойства AutoPostBack значение False и In Javascript:

$(document).on({
click: function (event) {
    if ($(event.target).is('#isAdvertiserFilter'))
    {
        $('select[id* = "AdvertiserFilterList"]').attr("disabled", !$('input[id* = "isAdvertiserFilter"]').prop("checked"));
        // When The checkbox is Uncheck
        if (!$('input[id* = "isAdvertiserFilter"]').prop("checked")) {
            // Do a PostBack
            __doPostBack($('input[id* = "isAdvertiserFilter"]'), '');
        }
    }
},

});

В коде позади я сбрасываю значение раскрывающегося списка:

private void AdvertiserFilterCheckChanged(object sender, EventArgs e)
    {
        AdvertiserFilterList.Enabled = isAdvertiserFilter.Checked;
        if (!isAdvertiserFilter.Checked)
        {
            AdvertiserFilterList.SelectedIndex = -1;
            FindByFilter();
        }
    }

Другие вопросы по теме