Ho una tabella jqGrid con molte colonne. La ricerca nella griglia viene effettuata utilizzando la barra degli strumenti dei filtri. Per la maggior parte di loro la ricerca è solo un semplice operatore predefinito. Per una colonna datetime voglio diversi tipi di operatori e selettore datepicker. Ho aggiunto l'inizializzazione dataInit
datepicker a searchoptions
, gli operatori necessari a searchoptions.sopt
. Per mostrare questo operatore ho impostato searchOperators su true. Quindi per questa colonna tutto va bene. Ho datepicker con il popup di selezione dell'operatore. Ma per tutte le altre colonne l'icona dell'operatore di default è mostrata a sinistra. È fastidioso in quanto l'operatore è predefinito e l'utente non può cambiarlo. Quindi c'è qualche possibilità di nasconderli usando l'API jqGrid? Per quanto ho potuto vedere ho potuto nascondere questo solo usando il mio codice personalizzato:jqLa barra degli strumenti del filtro Grid mostra il selettore dell'operatore di ricerca solo per singola colonna
Devo controllare il mio modello di colonna e dopo il rendering di rete (può essere in loadComplete
) per tutte le colonne che hanno vuoto sopt
o sopt.length == 0
per rimuovere operatore selettore. Oppure aggiungi una classe CSS che la nasconda. Non sei sicuro di quale di queste soluzioni sia migliore (nascondi o rimuovi) perché la rimozione potrebbe rompere alcune logiche e nascondere potrebbe influire sul calcolo della larghezza. Ecco esempio di quello che voglio dire su fiddle
function fixSearchOperators()
{
var columns = jQuery("#grid").jqGrid ('getGridParam', 'colModel');
var gridContainer = $("#grid").parents(".ui-jqgrid");
var filterToolbar = $("tr.ui-search-toolbar", gridContainer);
filterToolbar.find("th").each(function()
{
var index = $(this).index();
if(!(columns[index].searchoptions &&
columns[index].searchoptions.sopt &&
columns[index].searchoptions.sopt.length>1))
{
$(this).find(".ui-search-oper").hide();
}
});
}
Qualcuno ha qualche idea migliore?