Multiple jQgrids in jQueryui Tabs

前端 未结 2 1324
抹茶落季
抹茶落季 2021-01-06 10:47

I am having an issue that I need help with. I have 3 jQueryUI Tabs. The first holds a grid of items. The second holds a grid of Work Orders. The third just fires an aler

相关标签:
2条回答
  • 2021-01-06 11:23

    I know its an old question. But I also faced the same issue where in I had multiple jqGrids under the tabs and the loading thing was not working. Adding the below code in the javascript just before defining the grid worked for me:

    $('#Grid').jqGrid('GridDestroy');
    

    For me, the grids on different tabs where the same only the data inside the grid was changing.

    0 讨论(0)
  • 2021-01-06 11:33

    Probably your problem exist because you used the HTML code

    <div id="tabs-1">
       <table id="list1"><tr><td/></tr></table>
       <div id="pager1"/>
    </div>
    <div id="tabs-2">
       <table id="list"><tr><td/></tr></table>
       <div id="pager"/>
    </div>
    <div id="tabs-3">
        <p>Bla bla</p>
    </div>
    

    instead of

    <div id="tabs-1">
       <table id="list1"><tr><td/></tr></table>
       <div id="pager1"></div>
    </div>
    <div id="tabs-2">
       <table id="list"><tr><td/></tr></table>
       <div id="pager"></div>
    </div>
    <div id="tabs-3">
        <p>Bla bla</p>
    </div>
    

    I modified you code a little to the following

    jQuery(document).ready(function () {
        var initGrids= [false,false];
        $('#tabs').tabs({
            show: function (event, ui) {
                if (ui.index === 0 && initGrids[ui.index] === false) {
                    jQuery("#list1").jqGrid({
                        url: 'fillgrid.php',
                        datatype: 'json',
                        mtype: 'GET',
                        colNames: ['serial', 'type', 'origin', 'subtype', 'refreshdate'],
                        colModel: [
                            { name: 'id', index: 'id', width: 55 },
                            { name: 'type', index: 'type', width: 90 },
                            { name: 'origin', index: 'origin', width: 80, align: 'right' },
                            { name: 'subtype', index: 'subtype', width: 80, align: 'right' },
                            { name: 'refreshdate', index: 'refreshdate', width: 80, align: 'right' }
                        ],
                        pager: '#pager1',
                        rowNum: 10,
                        rowlist: [10, 20, 30],
                        sortname: 'id', // NOT 'serial',
                        sortorder: 'desc',
                        viewrecords: true,
                        caption: 'CPE Items',
                        width: 950
                    });
                    jQuery("#list1").jqGrid('navGrid', '#pager1', { edit: false, add: false, del: false });
                    initGrids[ui.index] = true;
                }
                else if (ui.index === 1 && initGrids[ui.index] === false) {
                    $("#list").jqGrid({
                        url: 'fillgridwo.php',
                        datatype: 'json',
                        mtype: 'GET',
                        colNames: ['Job Number', 'Date', 'System', 'Status', 'Technician', 'Timeframe'],
                        colModel: [
                            { name: 'id', index: 'id', width: 55 },
                            { name: 'Date', index: 'date', width: 90 },
                            { name: 'System', index: 'wsystem', width: 80, align: 'right' },
                            { name: 'Status', index: 'status', width: 80, align: 'right' },
                            { name: 'Technician', index: 'wname', width: 80, align: 'right' },
                            { name: 'Timeframe', index: 'time', width: 80, align: 'right' }
                        ],
                        pager: '#pager',
                        rowNum: 10,
                        rowList: [10, 20, 30],
                        sortname: 'id', // NOT 'jobno' or 'Job Number'
                        sortorder: 'desc',
                        viewrecords: true,
                        caption: 'Work Orders',
                        width: 950,
                        onSelectRow: function (id) {
                            //var d;
                            if (id) {
                                alert(id);
                                //??? onclick = openbox('Edit Work Order', 1);
                                //??? d = "jobno=" + id;
                                $.ajax({
                                    url: 'fillwo.php',
                                    type: 'POST',
                                    dataType: 'json',
                                    data: {jobno:id},
                                    success: function (data) {
                                        var id;
                                        for (id in data) {
                                            if (data.hasOwnProperty(id)) {
                                                $(id).val(data[id]);
                                            }
                                        }
                                    }
                                });
                                $("button, input:submit").button();
                            }
                            jQuery('#list').editRow(id, true);
                        }
                    });
                    jQuery("#list").jqGrid('navGrid', '#pager', { edit: false, add: false, del: false });
                    initGrids[ui.index] = true;
                }
                else if (ui.index === 2) {
                    alert('tab2');
                }
            }
        });
    });
    

    I included array initGrids which will be used to initialize every grid only once, commented unclear code like onclick = openbox('Edit Work Order', 1); and fixed sortname.

    You can see the demo. The grid contain will be not filled, because I not have any server components on the server

    0 讨论(0)
提交回复
热议问题