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?

questionAnswers(1)

yourAnswerToTheQuestion