Pasek narzędzi filtru jqGrid pokazuje selektor operatora wyszukiwania tylko dla pojedynczej kolumny
Mam tabelę jqGrid z wieloma kolumnami. Wyszukiwanie w siatce odbywa się za pomocą paska narzędzi filtru. Dla większości z nich wyszukiwanie jest prostym operatorem domyślnym. Dla jednej kolumny datetime chcę różnego rodzaju operatorów i selektora datepicker. dodałemdataInit
inicjalizacja datepicker dosearchoptions
, niezbędni operatorzysearchoptions.sopt
. Aby pokazać te operatory, ustawiłem searchOperators na true. Więc dla tej kolumny wszystko jest w porządku. Mam datepicker z popup selector operatora. Ale dla wszystkich innych kolumn po lewej stronie wyświetlana jest domyślna ikona operatora. Jest to denerwujące, ponieważ operator jest domyślny, a użytkownik nie może go zmienić. Czy istnieje więc możliwość ukrycia ich za pomocą API jqGrid? O ile mogłem zobaczyć, mogłem to ukryć tylko za pomocą mojego kodu niestandardowego:
Muszę sprawdzić mój model kolumny i po renderowaniu siatki (może być wloadComplete
) dla wszystkich kolumn, które są pustesopt
lubsopt.length == 0
aby usunąć selektor operatora. Lub dodaj klasę CSS, która to ukrywa. Nie masz pewności, które z tych rozwiązań jest lepsze (ukryj lub usuń), ponieważ usunięcie może złamać pewną logikę, a ukrycie może wpłynąć na obliczenie szerokości. Oto przykład tego, co mam na myśliskrzypce
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();
}
});
}
Czy ktoś ma jakieś lepsze pomysły?