2015-03-13 6 views
12

Ich habe den folgenden Code (JavaScript):select2 Datenlast Ajax kann jede Option nicht wählen

$('#cbxConnections').select2({ 
    minimumInputLength: 0, 
    multiple: false, 
    allowClear: true, 
    placeholder:{ 
     text:"@Diccionario.Connections", 
     id:" @Diccionario.Connections" 
    }, 
    ajax:{ 
     url:'@Url.Action("GetActiveConnections","Admin")', 
     dataType: 'json', 
     type:'post', 
     data:function(params){ 
      return { 
       q: params.term 
      }; 
     }, 
     processResults: function(data,page){ 
      return { 
       results: data 
      }; 
     } 
    }, 
    escapeMarkup: function (markup) { 
     return markup; 
    }, 
    templateResult: function(response){ 
     return '<div>'+response.Name+'</div>'; 
    }, 
    templateSelection: function(response){ 
     return response.Id; 
    }, 
    id: function(connection){ 
     console.log(connection); 
    } 
}); 

Für die Server-Seite bin ich mit ASP MVC 4. Die ausgewählten Daten erhalten Ajax und machen die Optionen aber diese Optionen sind nicht wählbar. Lesen anderen Beiträgen beschreiben sie die ID-Funktion, aber diese Funktion desappears appearently auf der Version von select2 Ich verwende 2.4

ich gehorchen, zurückzuweisen das Beispiel von Ajax auf der Dokumentation auf github „Laden zeigt Remote Daten“

Antwort

51

Wenn Ihre ajax-Antwort nicht über id und Text Attribute sollten Sie diese Client-Seite

Dies ist eine Anforderung auf Version 4.0 (nicht wissen, reparieren warum)

ajax: { 

    processResults: function (data, params) { 

       params.page = params.page || 1; 

       // you should map the id and text attributes on version 4.0 

       var select2Data = $.map(data.result.data, function (obj) { 
        obj.id = obj._id.$id; 
        obj.text = obj.name; 

        return obj; 
       }); 

       return { 
        results: select2Data, 
        pagination: { 
         more: data.result.more 
        } 
       }; 
      } 

} 
+0

Danke! hat mir sehr geholfen. – victorkurauchi

+0

Danke für Ihre Erklärung. – KostasC

+0

Perfekt wie ich wollte. Danke vielmals. –