showing not dynamically change jquery django datatables jquery-select2 yadcf

jquery - not - Los valores del filtro Select2 desaparecen cuando la búsqueda no devuelve resultados



select2 selected (1)

Agregue el siguiente código para select2:

$(''select'').select2({ minimumResultsForSearch: -1 });

Estoy usando una implementación de DataTables en el servidor con yadcf y select2 para una funcionalidad adicional. Los datos utilizados para rellenar la tabla se adquieren a través de una solicitud Ajax a una vista Django, al igual que los datos para la funcionalidad autocompletar select2; pero desde una vista separada de Django.

Mi problema es el siguiente. Si una consulta de búsqueda no arrojara resultados, los valores en los campos de búsqueda select2 desaparecerán y no se podrán restablecer en DataTables; en su lugar, debe actualizar la página. Los valores en los campos que no son select2 permanecen visibles y se pueden restablecer.

Los tipos de filtro dentro de las columnas problemáticas son selección multi_select con un tipo de selección select2 . Los tipos de filtro dentro de las columnas no problemáticas son range_date y range_date usando bootstrap-datetimepicker como tipo datepicker.

A continuación se muestran mis parámetros de columna select2.

{ "column_number": 3, "filter_type": "multi_select", "select_type": "select2", "select_type_options": { dropdownCssClass : ''bigdrop'', multiple: true, minimumInputLength: 1, ajax: { url: ''{% url ''ffTestApp:searchData'' ''product'' %}'', delay: 250, dataType: ''json'', data: function (params) { return { q: params.term, v: yadcf.exGetColumnFilterVal(table,4), s: yadcf.exGetColumnFilterVal(table,5) }; }, processResults: function (data, params) { params.page = params.page || 1; return { results: data.items }; }, }, escapeMarkup: function (markup) { return markup; }, templateResult: function(data) { return data.id; }, templateSelection: function(data) { return data.id; } } }

A continuación se muestra mi vista Django utilizada para proporcionar la funcionalidad de autocompletar.

def searchData(request, column): try: q = request.GET.getlist(''q'')[0] except: pass else: if q != "": try: products = request.GET.getlist(''p[]'') except: pass else: product_q = list() for p in products: product_q.append("p.name=''{}''".format(p)) if len(product_q)>0: product_q = "({}) AND ".format(" OR ".join(product_q)) else: product_q = "" try: versions = request.GET.getlist(''v[]'') except: pass else: version_q = list() for v in versions: version_q.append("tp.version=''{}''".format(v)) if len(version_q)>0: version_q = "({}) AND ".format(" OR ".join(version_q)) else: version_q = "" try: serials = request.GET.getlist(''s[]'') except: pass else: serial_q = list() for v in serials: serial_q.append("s.serial=''{}''".format(v)) if len(serial_q)>0: serial_q = "({}) AND ".format(" OR ".join(serial_q)) else: serial_q = "" autoComplete = connection.cursor() if column == "product": query = "SELECT DISTINCT p.name FROM ffTestApp.ffTestApp_product AS p INNER JOIN ffTestApp.ffTestApp_testprogram AS tp " / "ON tp.product_id=p.id INNER JOIN ffTestApp.ffTestApp_session AS s ON s.test_program_id = tp.id " / "WHERE {1}{2}p.name REGEXP ''{0}'' ORDER BY p.name ASC;".format(q, version_q, serial_q) elif column == "version": query = "SELECT DISTINCT tp.version FROM ffTestApp.ffTestApp_testprogram AS tp INNER JOIN ffTestApp.ffTestApp_session AS s " / "ON s.test_program_id=tp.id INNER JOIN ffTestApp_product AS p ON tp.product_id=p.id WHERE {1}{2}tp.version REGEXP ''{0}''" / " ORDER by tp.version;".format(q, product_q, serial_q) elif column == "serial": query = "SELECT DISTINCT s.serial FROM ffTestApp.ffTestApp_session AS s INNER JOIN ffTestApp_testprogram AS tp ON s.test_program_id=tp.id" / " INNER JOIN ffTestApp_product AS p ON tp.product_id=p.id WHERE {1}{2}" / "s.serial REGEXP ''{0}'' ORDER BY s.serial;".format(q, product_q, version_q) elif column == "status": query = "SELECT DISTINCT final FROM ffTestApp.ffTestApp_session WHERE final REGEXP ''{0}'' ORDER BY final;".format(q) autoComplete.execute(query) m = [] for i in autoComplete.fetchall(): value = dict() value["id"] = i m.append(value) results = {"items": m} return JsonResponse(results, safe=False)

Gracias.