#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, как в вашем примере.