Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jqgrid toggle filter toolbar with frozen column is not working

I have seen the following demo with frozen column and filter toolbar here: http://www.ok-soft-gmbh.com/jqGrid/FrozenColumns.htm

Now for the same example I want to implement toggle feature that was availbale in demo: http://www.ok-soft-gmbh.com/jqGrid/SimpleLocalGridWithSearchingToolbar1.htm

I tried it but it is not working.. can anybody create a demo that has both frozen column and toggle filter tool bar?


I tried to download the latest jqgrid code from github and tried to replicate the demo as follows( as u said the issue was fixed i thought no need of the frozendiv, fixGBoxHeight functions in the demo u have shown me previously i.e http://www.ok-soft-gmbh.com/jqGrid/FrozenColumnsAndFilterToggle.htm)

    $grid.jqGrid({
        datatype: 'local',
        data: mydata,
        colNames: [/*'Id', */'Client', 'Date', 'Amount', 'Tax', 'Total', 'Closed', 'Shipped via', 'Notes'],
        colModel: [
            //{name: 'id', index: 'id', width: 45, align: 'center', sorttype: 'int', frozen: true},
            {name: 'name', index: 'name', width: 70, editable: true, frozen: true},
            {name: 'invdate', index: 'invdate', width: 80, align: 'center', sorttype: 'date',
                formatter: 'date', formatoptions: {newformat: 'm/d/Y'}, datefmt: 'm/d/Y'},
            {name: 'amount', index: 'amount', width: 75, formatter: 'number', align: 'right', editable: true},
            {name: 'tax', index: 'tax', width: 50, formatter: 'number',
                formatoptions: {decimalSeparator: ".", thousandsSeparator: " ", decimalPlaces: 4, defaultValue: '0.0000'},
                align: 'right', editable: true, editoptions: {readonly: true}},
            {name: 'total', index: 'total', width: 60, formatter: 'number', align: 'right', editable: true},
            {name: 'closed', index: 'closed', width: 70, align: 'center', editable: true,
                formatter: 'checkbox', edittype: 'checkbox', editoptions: {value: 'Yes:No', defaultValue: 'Yes'}},
            {name: 'ship_via', index: 'ship_via', width: 100, align: 'center', formatter: 'select', editable: true,
                edittype: 'select', editoptions: {value: 'FE:FedEx;TN:TNT;IN:Intim', defaultValue: 'Intime'}},
            {name: 'note', index: 'note', width: 70, sortable: false, editable: true}
        ],
        rowNum: 10,
        rowList: [5, 10, 20],
        pager: '#pager',
        gridview: true,
        rownumbers: true,
        sortname: 'invdate',
        viewrecords: true,
        sortorder: 'desc',
        caption: 'Frozen columns with dynamic shown filter toolbar',
        height: '100%',
        shrinkToFit: false,
        width: 550,
        resizeStop: function () {
            /*resizeColumnHeader.call(this);
            fixPositionsOfFrozenDivs.call(this);
            fixGboxHeight.call(this);*/
        },
        loadComplete: function () {
            //fixPositionsOfFrozenDivs.call(this);
        }
    });
    $grid.jqGrid('navGrid', '#pager', {add: false, edit: false, del: false}, {}, {}, {},
        {multipleSearch: true, overlay: 0});
    $grid.jqGrid('filterToolbar', {stringResult: true, searchOnEnter: true, defaultSearch: 'cn'});
    $grid.jqGrid('navButtonAdd', '#pager', {
        caption: "Filter",
        title: "Toggle Searching Toolbar",
        buttonicon: 'ui-icon-pin-s',
        onClickButton: function () {
            this.toggleToolbar();
            /*if ($.isFunction(this.p._complete)) {
                if ($('.ui-search-toolbar', this.grid.hDiv).is(':visible')) {
                    $('.ui-search-toolbar', this.grid.fhDiv).show();
                } else {
                    $('.ui-search-toolbar', this.grid.fhDiv).hide();
                }
                this.p._complete.call(this);
                fixPositionsOfFrozenDivs.call(this);
            }*/
        }
    });
    $grid[0].toggleToolbar();
    /*$grid.jqGrid('gridResize', {
        minWidth: 450,
        stop: function () {
            fixPositionsOfFrozenDivs.call($grid[0]);
            fixGboxHeight.call($grid[0]);
        }
    });
    resizeColumnHeader.call($grid);*/
    $grid.jqGrid('setFrozenColumns');
    /*$grid.p._complete.call($grid);
    fixPositionsOfFrozenDivs.call($grid);*/
});

But still the code is not going to work and the filtertoolbar not working as it is in your previous demo(http://www.ok-soft-gmbh.com/jqGrid/FrozenColumnsAndFilterToggle.htm)

like image 201
Rohini Kumar Avatar asked Oct 08 '22 22:10

Rohini Kumar


1 Answers

First of all I would recommend you to use the demo from the answer as the basis instead of the demo from the previous answer.

You are right. The current implementation of frozen columns has problem with dynamic showing or hiding of the searching toolbar. I interpret it as a bug in the toggleToolbar.

Till the bug is not fixed I suggest that you show or hide the toolbar in the frozen part of the grid manually. The demo shows how to implement this. The most important part of the code of the demo you find below:

$grid.jqGrid('filterToolbar', {stringResult: true, searchOnEnter: true, defaultSearch: 'cn'});
$grid.jqGrid('navButtonAdd', '#pager', {
    caption: "Filter",
    title: "Toggle Searching Toolbar",
    buttonicon: 'ui-icon-pin-s',
    onClickButton: function () {
        this.toggleToolbar();
        if ($.isFunction(this.p._complete)) {
            if ($('.ui-search-toolbar', this.grid.hDiv).is(':visible')) {
                $('.ui-search-toolbar', this.grid.fhDiv).show();
            } else {
                $('.ui-search-toolbar', this.grid.fhDiv).hide();
            }
            this.p._complete.call(this);
            fixPositionsOfFrozenDivs.call(this);
        }
    }
});
$grid[0].toggleToolbar();
like image 146
Oleg Avatar answered Oct 13 '22 11:10

Oleg