如何在确认框的取消事件后强制 asp.net 列表框保留选定的值?

Posted

技术标签:

【中文标题】如何在确认框的取消事件后强制 asp.net 列表框保留选定的值?【英文标题】:how to force asp.net listbox to hold the selected values after confirmation box's cancel event? 【发布时间】:2019-12-27 15:58:46 【问题描述】:

我有下面的 asp.net 列表框,它已经用 sumoselect 装饰。

如果用户取消选择该项目(未选择任何项目),则在下拉列表中选择一个项目后,将提示用户一个 javascript 确认框,如果用户单击取消按钮,则下拉列表将继续保留值。 下面是我的代码。

<td class="ievent" style="width:22%; padding-bottom:10px; padding-right:30px;padding-left:10px;">
         <asp:ListBox ID="ListBoxSol" runat="server" SelectionMode="Multiple"  CssClass="textbox"  Height="22px" Font-Size="Small" Width="230px">
            </asp:ListBox>           
         </td>
if (lastselectedItemIndex == -1) 
                    var dropselvalue = sessionStorage.getItem("items");
                    var ans = confirm("If all Internal Solution are de-selected than Solution Revenue value will be saved as 0. Do you want to de-select all?");
                    if (ans == true) 
                        $('#LabelSolRev').hide();
                        $('#TextBoxSolRev').hide();
                    
                    else 
                        event.preventDefault();
                        //$("#ListBoxSol option").find('AI Solutions').attr("selected", true);
                        //$('#ListBoxSol option').(":checked");
                        $("#ListBoxSol option").each(function () 
                            if ($(this).html() == "AI Solutions") 
                                $(this).prop("selected", true);
                                //$(this).checked(true);
                                $(this).removeClass("opt");
                                $(this).addClass("selected opt");
                                $(this).trigger("click");
                                return false;
                            
                        );

                    
                

但在我的情况下,使用给定的代码取消选择后,多选下拉菜单无法保存值。谁能建议如何处理这种情况?

【问题讨论】:

【参考方案1】:

如果我对您的问题的理解正确,您想从asp:ListBox 控件中选择多个选项,并在取消选择所有要保留其记录的选项后,以便在某些情况下重新选择它们。

首先,asp:ListBox 控件不是这样选择的:$("#ListBoxSol option")

由于此控件在服务器上运行,因此会在其前面添加一些附加信息。这将导致其 id 变为:#MainContent_ListBoxSol

要选择asp:ListBox 控件,您需要将$("#ListBoxSol option") 替换为$("#&lt;%= ListBoxSol.ClientID %&gt; option")。您可以阅读更多关于在 jQuery here 中选择 asp.net 控件的信息。

其次,要保留选定的值,您可以将它们存储在一个数组中,比如“值”。

var values = [];

$("#<%= ListBoxSol.ClientID %> option:selected").each(function (i, option) 
        values[i] = option;
);

以后可以遍历数组,重新选择选项。

$.each(values, function (index, option) 
   $("#<%= ListBoxSol.ClientID %> option[value='" + option.value + "']").prop('selected', true);
);

希望对你有帮助。

【讨论】:

以上是关于如何在确认框的取消事件后强制 asp.net 列表框保留选定的值?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC3 - 处理来自强类型列表框的多个值的问题

asp.net 如何在显示模态框的同时触发OnClick事件

怎么获取提示框的返回值(C# 、asp.net、webform)

如何清除文本框的缓存?? asp.net

在没有确认对话框的情况下取消下拉列表的更改事件

如何获取触发到断点的 ASP.NET 事件列表?