无法在 Bootstrap 的 select2 插件中设置选定值

Posted

技术标签:

【中文标题】无法在 Bootstrap 的 select2 插件中设置选定值【英文标题】:Can't set selected value in select2 plugin in Bootstrap 【发布时间】:2014-08-12 14:32:57 【问题描述】:

我在我的网站上使用了一个 select2 插件。我无法在 select2 中设置选定的值。请在下面查看我的代码。

HTML

 <input id="drpEditProvider" class="form-control" type="text" value="" tabindex="8" name="ProviderId" data-required="true" />

脚本

  var attendeeUrl = '@Url.Action("GetProvider", "Admin")';
    var pageSize = 100;

    $('#drpEditProvider').select2(
    
        placeholder: 'Please Select Provider',
        //Does the user have to enter any data before sending the ajax request
        minimumInputLength: 0,
        allowClear: true,
    //tags:["red", "green", "blue"],
        ajax: 
            ////How long the user has to pause their typing before sending the next request
            //quietMillis: 150,
            //The url of the json service
            url: attendeeUrl,
            dataType: 'jsonp',
            //Our search term and what page we are on
            data: function (term, page) 
                return 
                    pageSize: pageSize,
                    pageNum: page,
                    searchTerm: term
                ;
            ,
            results: function (data, page) 
                //Used to determine whether or not there are more results available,
                //and if requests for more data should be sent in the infinite scrolling
                var more = (page * pageSize) < data.Total;
                return  results: data.Results, more: more ;
            
        ,
        initSelection: function (element, callback) 
            var data = [];
            $(element.val().split(",")).each(function () 
                data.push( id: this, text: this );
            );
            callback(data);
        ,
    );

控制器和模型

    public class Select2PagedResult
    
       public int Total  get; set; 
       public List<Select2Result> Results  get; set; 
    
    public class Select2Result
    
       public string id  get; set; 
       public string text  get; set; 
    
    public JsonResult GetProvider(string searchTerm, int pageSize, int pageNum)
    
        int Count = 0;

        List<Provider> provideres = ProviderHelper.GetAllProvider(searchTerm, out Count);

        //Translate the attendees into a format the select2 dropdown expects
        Select2PagedResult pagedProvider = new Select2PagedResult();

        pagedProvider.Results = new List<Select2Result>();

        //Loop through our attendees and translate it into a text value and an id for the select list
        foreach (Provider a in provideres)
        
            pagedProvider.Results.Add(new Select2Result  id = a.Id.ToString(), text = a.Name );
        
        //Set the total count of the results from the query.
        pagedProvider.Total = Count;

        //Return the data as a jsonp result
        return new JsonpResult
        
            Data = pagedProvider,
            JsonRequestBehavior = JsonRequestBehavior.AllowGet
        ;
    

【问题讨论】:

控制器和模型..?你在使用像 Angular 这样的 js 框架吗?如果是这样,请在问题中提及相同的内容或对其进行标记... 感谢您提供宝贵的信息。这个项目不使用像角度这样的框架。我在我的 web 应用程序中使用 jQuery 和 select2.js,这个项目使用 Normal mvc 4 with razor 和 bootstrap 模板。 【参考方案1】:

我终于找到了答案。您可以在select2 插件中设置选定的值,如下所示。

选择2单选

$("#drpselector").select2("data",  id: "1", text:"Test 1" );

选择 2 多选

 var arrdata = "1:Test 1,2:Test 2"   
 var thdprdata = [];
 $(arrdata.split(",")).each(function () 
 thdprdata.push( id: this.split(':')[0], text: this.split(':')[1] ););

 $("#drpselector").select2("data", thdprdata);

我在我的应用程序中使用此代码。对我来说效果很好。

【讨论】:

以上是关于无法在 Bootstrap 的 select2 插件中设置选定值的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Select2 下拉菜单中选择项目

Turbolinks 不适用于 Rails 4.2.4 Ruby 2.2.4 中的 bootstrap select2

select2 + requirejs:无法捆绑 i18n 文件

Select2 在 Bootstrap 模式中选择

Select2 v4 和 Bootstrap v4 - 缺少下拉菜单

Bootstrap 4 的错误样式 Select2