用" all"选择2选项(ajax查询)

时间:2017-12-13 10:28:54

标签: jquery ajax webforms jquery-select2

我有一个列表框:

<asp:ListBox ID="ListBoxCodeProduct"
    [...]
    CssClass="SelectProducts select2-selected-options"
    SelectionMode="Multiple">
</asp:ListBox>

我的select2使用ajax在ListBox中获取数据。

$(document).ready(function () {
    $('.SelectProducts').select2({
        placeholder: 'Choose product(s)',
        allowClear: true,
        ajax: {
            url: "../Product.ashx",
            dataType: 'json',
            delay: 250,
            data: function (params) {
                [...]
                };
                return params;
            },
            processResults: function (data, params) {
                [...]
                };
            },
            cache: false
        },
        minimumInputLength: 0
    });
});

我想要一个选项&#34;所有产品&#34; (在我的列表框中有一个例子复选框)以允许所有选项。

我找到了很多解决方案,但总是使用html中的数据(使用&#34; li&#34;和&#34;选项&#34;但从不使用ajax) 我想做这样的事情:

$("#CheckBoxAllProducts").click(function(){
    if($("#CheckBoxAllProducts").is(':checked') ){
        $(".SelectProducts'> li").prop("selected","selected");
        $(".SelectProducts'").trigger("change");
    }else{
        $(".SelectProducts'> li").removeAttr("selected");
        $(".SelectProducts'").trigger("change");
    }
});

我是怎么做到的? 提前致谢

1 个答案:

答案 0 :(得分:0)

感谢您的回答,我已经看到了这个话题。但是,它是不同的,因为我的DOM不包含我的结果列表。

但是有人帮助我: (我们在点击checkBox时开始声明我的产品列表)

 $("#CheckBoxAllProducts").click(function (e) {
        $.ajax({
            url: "../Product.ashx",
            type: 'POST',
            data: { taillePage: 100 },
            dataType: 'json',
            cache: false
        }).done(function (data) {
            var select2 = $('.SelectProducts'),
                selectedValues = [];
            select2.empty();
            $.each(data.items, function (i, item) {
                select2.append($('<option>', {
                    value: item.id,
                    text: item.text
                }));
                selectedValues.push(item.id);
            });
            select2.val(selectedValues).trigger('change');
        });
    });

它现在正在工作! :) 谢谢