Как сделать автопостбэк многозначным списком в ASP?

#c# #asp.net #twitter-bootstrap #bootstrap-4 #bootstrap-multiselect

Вопрос:

Я пытаюсь создать список с несколькими вариантами выбора в ASP.NET использование элемента управления ListBox со стилем множественного выбора начальной загрузки.

Что касается внешнего вида, то он хорошо работает. Я могу переключить его в выпадающее меню, я могу выбрать и отменить выбор параметров и закрыть его.

 lt;asp:ListBox ID="NameListBox" runat="server" CssClass="multiselect" SelectionMode="Multiple" OnSelectedIndexChanged="NameListBox_SelectedIndexChanged"gt;  lt;asp:ListItem Text="Name 1" /gt;  lt;asp:ListItem Text="Name 2" /gt;  lt;asp:ListItem Text="Name 3" /gt;  lt;asp:ListItem Text="Name 4" /gt;  lt;asp:ListItem Text="Name 5" /gt;  lt;asp:ListItem Text="Name 6" /gt; lt;/asp:ListBoxgt;  

С чем у меня проблема, так это с отправкой обратной связи и обработкой вновь выбранных элементов. У меня есть приложение OnSelectedIndexChanged, в котором я просматриваю выбранные элементы и вставляю их в базу данных, но я не знаю, когда и как его запустить. Я знаю, что у меня могла бы быть отдельная кнопка, чтобы вызвать обратную передачу и сохранить выбранные элементы, но я хотел бы вызвать автоматическую обратную передачу при закрытии списка.

Проблема в том, что если я использую AutoPostBack=»true», то обратная отправка будет происходить при каждом изменении параметра, поэтому у пользователя нет возможности выбрать несколько параметров, кроме как сохранить сразу. Я хочу вызвать обратную отправку только тогда, когда выпадающий список фактически закрыт.

После многих попыток я добрался до этого:

 $('.multiselect').multiselect({  nonSelectedText: '',  nSelectedText: 'selected',  allSelectedText: 'Everyone',  numberDisplayed: 2,  buttonTextAlignment: 'left',  buttonWidth: 240,  onDropdownHidden: function (event) {  __doPostBack($(event.target).parent().children('.multiselect').attr('id'), '');  }  });  

Это вызывает обратную передачу после закрытия раскрывающегося списка списка, что хорошо. Но, к сожалению, обработчик события NameListBox_SelectedIndexChanged не запускается во время обратной отправки, поэтому ничего не происходит.

Какие-нибудь советы?

Ответ №1:

надеюсь, это вам поможет~

lt;asp:ListBox ID="DropDownList_ExportCountry" runat="server" SelectionMode="Multiple" OnSelectedIndexChanged="DropDownList_ExportCountry_SelectedIndexChanged"gt;lt;/asp:ListBoxgt;

после html

 lt;script type="text/javascript"gt; $('[id*=DropDownList_ExportCountry]').multiselect({  onDropdownHide: function (event) {  __doPostBack();//__doPostBack($(event.target).parent().children('#DropDownList_ExportCountry').attr('id'), '')  }  });  

и помните, что включите js и Css, подобные этому, в

 lt;link href="http://cdn.rawgit.com/davidstutz/bootstrap-multiselect/master/dist/css/bootstrap-multiselect.css" rel="stylesheet" type="text/css" /gt; lt;script src="http://cdn.rawgit.com/davidstutz/bootstrap-multiselect/master/dist/js/bootstrap-multiselect.js" type="text/javascript"gt;lt;/scriptgt;  

Комментарии:

1. С тех пор я решил эту проблему, но да, именно этим я и занялся. Сделал обратную связь с помощью javascript, как в вашем примере.