回发后,选择2多个选择值不被保留

时间:2014-01-22 16:34:40

标签: jquery-select2

单击提交或页面回发时,我遇到的问题是没有显示select2值。我正在使用ajax helper从数据库加载数据。

这是我的select2代码:

$('#<%=fstName.ClientID%>').select2({
        placeholder: 'Enter Reviewer',
        minimumInputLength: 0,
        multiple: true,
        autoClear:false,  
        ajax: {
            type: 'POST',
            url: 'BulkPickers/GetRev',
            dataType: 'json',

            data:
            function (term, page) {
                return {
                    appinstid: appInstId,
                    searchTerm: term,
                    selection: $('#<%=fstName.ClientID%>').val() 
                };
            },
            results: function (data, page) {

                var myResults = [];
                $.each(data, function (index, item) {
                    myResults.push({
                        id: item.id,
                        text: item.text
                    });
                });

                return {
                    results: myResults
                };
            },
            initSelection:
               function (element, callback) {
                   var data = [];
                   $(element.val().split(",")).each(function () {
                       data.push({ id: this, text: this });
                   });
                   callback(data);
               }
        }
    });

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。需要在更改文本时填充隐藏字段值,然后使用select2上的隐藏输入值进行初始化。这是完整的代码:

$j('#<%=txtVendor.ClientID%>').select2({

        placeholder: 'type the name ',
        minimumInputLength: 0,
        multiple: true,
        autoClear:false,  
        ajax: {
            type: 'POST',
            url: 'BulkPickers/GetVendor',
            dataType: 'json',

            data:
            function (term, page) {
                return {
                    appinstid: appInstId,
                    searchTerm: term,
                    selection: $j('#<%=txtVendor.ClientID%>').val() 
                };
            },
            results: function (data, page) {

                var myResults = [];
                $j.each(data, function (index, item) {
                    myResults.push({
                        id: item.id,
                        text: item.text
                    });
                });

                return {
                    results: myResults
                };
            }
        }
    }).select2("data",vendobj);

    $j('#<%=txtVendor.ClientID%>').change(function () {
        var selections = (JSON.stringify($j('#<%=txtVendor.ClientID%>').select2('data')));
        $j('#<%=hdnVend.ClientID%>').attr("value", selections);
    });

答案 1 :(得分:0)

我认为这可能是由于您在回发期间没有重新填充SELECT中的项目(因为您使用AJAX填充了这些项目,并且它们不是模型的一部分。)因此,您正在尝试设置SELECT到不存在的OPTION的ID。

我遇到了描述的问题,并在SELECT中添加了模型中引用的项目作为选择,这意味着在回发之后该值会自动保留在SELECT中。无需“手动”设置所需的值。该选项必须在SELECT中才能显示。