Member 13440616 Ответов: 3

Как сделать так, чтобы флажок "выбрать все" был установлен по умолчанию при загрузке страницы для sumoselect jquery


Я использую Sumoselect jquery для заполнения выпадающего списка в моем ASP.Net страница WebForms, но при загрузке страницы я не могу сделать выбор "выбрать все" проверенным, чтобы все значения выпадающих списков были выбраны при загрузке страницы.

Что я уже пробовал:

Это мой код aspx---

<%@ Page Language="C#" AutoEventWireup="true" Inherits="Dropdown1" CodeBehind="Dropdown1.aspx.cs" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
    <script type="text/javascript" src="jquery.sumoselect.min.js"></script>
    <link href="sumoselect.css" rel="stylesheet" />

    <script type="text/javascript">

        $(document).ready(function () {
            $('#<%=lstBoxTest.ClientID%>').SumoSelect({selectAll:true});
        });


    </script>
    <style type="text/css">
        body {
            font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
            color: #444;
            font-size: 13px;
        }

        p, div, ul, li {
            padding: 0px;
            margin: 0px;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ListBox runat="server" ID="lstBoxTest" SelectionMode="Multiple">
            <asp:ListItem Text="Red" Value="0"></asp:ListItem>
            <asp:ListItem Text="Green" Value="1"></asp:ListItem>
            <asp:ListItem Text="Yellow" Value="2"></asp:ListItem>
            <asp:ListItem Text="Blue" Value="3"></asp:ListItem>
            <asp:ListItem Text="Black" Value="4"></asp:ListItem>
        </asp:ListBox>
        <asp:Button Text="Get Values" Visible="false" ID="btnGetSelectedValues" OnClick="btnGetSelectedValues_Click" runat="server" />
    </form>
</body>
</html>





и это мой код позади---

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


    public partial class Dropdown1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {


        }


        protected void btnGetSelectedValues_Click(object sender, EventArgs e)
        {
            string selectedValues = string.Empty;



            foreach (ListItem li in lstBoxTest.Items)
            {
                if (li.Selected == true)
                {
                    selectedValues += li.Text + ",";
                }
            }

            
            Response.Write(selectedValues.ToString());
        }



    }

3 Ответов

Рейтинг:
2

Richard Deeming

Глядя на документация[^], вам нужно позвонить в selectAll метод:

$('#<%=lstBoxTest.ClientID%>').SumoSelect({selectAll:true})[0].sumo.selectAll();

Однако, это будет перезаписывать выбор пользователя каждый раз, когда он нажимает кнопку. Вам нужно будет убедиться, что вы звоните только в selectAll метод при первой загрузке или при отсутствии выбранных элементов. Например:
$(function(){
    var list = $('#<%=lstBoxTest.ClientID%>');
    list.SumoSelect({selectAll:true});
    
    if (!list.find("option:selected").length) {
        // No items are selected:
        list[0].sumo.selectAll();
    }
});


Member 13440616

Нет это тоже не работает

Richard Deeming

Затем вам нужно будет отладить свой код, чтобы выяснить, почему. Или сообщить об ошибке авторам библиотеки.

Рейтинг:
2

Member 14040885

$( document ).ready(функция() {

var list = $('#<%=cyclst.ClientID%>');
list.SumoSelect({selectAll:true});

if (!list.find("option:selected").длина) {
// Элементы не выбраны:
список[0].sumo.selectAll();
}
});

Это работает на меня.


CHill60

Это решение 2 повторно

Рейтинг:
1

Laxmidhar tatwa technologies

 <script>  
       function selectDeselect() {
          
           var listb = document.getElementById('<%=lstBoxTest.ClientID %>');  
          
            var len = listb.options.length;  
            for (var i = 0; i < len; i++) {  
                
                listb.options[i].selected = true;  
            }  
        }  
        
      </script>  
    <style type="text/css">
        body {
            font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
            color: #444;
            font-size: 13px;
        }
 
        p, div, ul, li {
            padding: 0px;
            margin: 0px;
        }
    </style>
</head>
<body onload="selectDeselect();">
    <div style="margin-left:200px;">
    <form id="form1" runat="server">
        <asp:ListBox runat="server" ID="lstBoxTest" SelectionMode="Multiple" Width="300px">
            <asp:ListItem Text="Red" Value="0"></asp:ListItem>
            <asp:ListItem Text="Green" Value="1"></asp:ListItem>
            <asp:ListItem Text="Yellow" Value="2"></asp:ListItem>
            <asp:ListItem Text="Blue" Value="3"></asp:ListItem>
            <asp:ListItem Text="Black" Value="4"></asp:ListItem>
        </asp:ListBox>
        <asp:Button Text="Get Values" Visible="false" ID="btnGetSelectedValues" OnClick="btnGetSelectedValues_Click" runat="server" />
    </form>
        </div>
</body>


Richard Deeming

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

Member 13440616

Он работает не так, как я ожидал