Selección programática de select2 que recupera sus datos a través de Ajax.

Estoy usando select2 versión 4.0, y estoy tratando de hacer una selección programática en un cuadro de selección que obtiene sus datos de una llamada ajax.

En la documentación, encontré cómo establecer un valor mediante progtwigción en un select2 regular, pero no puedo averiguar cómo hacer esto con una selección de ajax.

Si recuerdo correctamente, en la versión anterior, podría establecer el valor actual pasando un dato a select2 con este comando:

jQuery("selectbox").select2("data", data) 

Intenté esto y envié un objeto de datos con ID, texto y resultado, pero no ocurre nada visible, y cuando pregunto el estado del cuadro de selección, para ver los valores seleccionados, devuelve nulo.

¿Se eliminó esta opción o simplemente se cambió? ¿Dónde puedo encontrar esto en la documentación, o cómo podría lograr el comportamiento deseado?

La única forma de lograrlo es agregar primero una a la de selección con los datos que desea seleccionar y, justo después, seleccionarla como lo haría con un cuadro de selección normal. Esta fue la respuesta oficial de kevin-brown también, en su página del proyecto github.

https://github.com/select2/select2/issues/3273

Entonces, básicamente, si sabe qué le gustaría seleccionar, puede crear fácilmente un elemento desde él, agregarlo al cuadro de selección original y luego seleccionarlo por su valor:

 var option=jQuery(" 

También me encantaría saber una respuesta completa a esto, pero aquí hay una solución parcial:

 $('#select2-control-id').val('item-id').trigger('select2:select').trigger('change'); 

Esto solo parece funcionar si select2 ya ha cargado el elemento que está solicitando, es decir, es uno en el que ya ha hecho clic.

No solo tiene que haber abierto manualmente el menú desplegable para que se cargue la primera página de elementos a través de AJAX, sino que también debe hacer clic en el que desea seleccionar más adelante mediante progtwigción.

Esto parece ser porque solo agrega al elemento de select subyacente cuando realmente haces clic en ellos.

No puedo ver una manera de decirle a select2 progtwigción que cargue la primera página de resultados de AJAX.

Es fácil manipular el cuadro oculto como:

 //set first option as selected $("select [value='0']").attr("selected","selected"); $("select").trigger("change"); 

Manifestación

Puedes probar esto.

  var dataString = 'id='+$value; var promise = sendAjaxFunction('load_form.php?k=1',dataString); $("#LoadMachine").html(""); promise.success(function (data) { $("#LoadMachine").html(data); $("#MachineName").select2({ placeholder: 'Select Operation Name ...', allowClear: true }); return false; }); 

Cargue los datos en una Div #LoadMachine y como resultado puede cargar select2.