JQuery UI Resizable与内部jqGrid

时间:2013-09-13 09:06:25

标签: jquery css jquery-ui jqgrid jquery-ui-resizable

我正在制作带有小部件的仪表板。可以使用JQuery UI插件调整窗口小部件的大小,但仅限于其高度。宽度自动设置为父屏幕的100%,即屏幕的50%。

Widget有标题和内容:

<div id="widget">
    <div id="header">ssss</div>
    <div id="content">
        <div id="grid-container">
            <table id="mygrid"></table>
        </div>
    </div>
</div>

JS

$(function () {
    var colNames = [
        "One", "Two", "Three", "Four"];
    var colModel = [];
    for (index = 0; index < colNames.length; ++index) {
        colModel.push({
            name: "col" + index,
            id: "col" + index,
            width: 75
        });
    }
    console.log($('#grid-container').height());
    $('#mygrid').jqGrid({
        datatype: 'local',
        data: getData(),
        height: $('#grid-container').height(),
        autowidth: true,
        shrinkToFit: false,
        colNames: colNames,
        colModel: colModel,
        rownumbers: true,
        rownumWidth: 10,
        scroll: 1
    });

    $('#widget').resizable({
        handles: "s",
        distance: 5,
        alsoResize: "#content",
        resize: function () {
            var $grid = $('#mygrid'),
                $gbox = $grid.find(".ui-jqgrid"),
                outerHeight = $gbox.height() - $grid.jqGrid('getGridParam', 'height') + 24;
            $grid.jqGrid('setGridHeight', $('#grid-container').height() - outerHeight);
        },
        stop: function (event, ui) {
            //that._trigger('resize');
        }
    });
});

function getData() {
    //fake data from http://www.ok-soft-gmbh.com/jqGrid/T.J.Crowder.htm
    //thx Oleg  
    [...]
}

在这里小提琴:

http://jsfiddle.net/techunter/AHWbv/

问题

在我的网站上,调整大小时会出现延迟和跳跃。小提琴为我重现了这个问题。如果你有任何建议或替代解决方案,我在这里苦苦挣扎。

如何在调整大小时使用jqgrid填充父级来调整我的小部件HEIGHT的大小?

1 个答案:

答案 0 :(得分:0)

您可以调用调整大小功能或绑定到onresize事件:

    //detect if the screen is resized and if so adjust the grids
    window.onresize = function () { resizePageGrids() }

然后

function resizePageGrids() {        
    var w = $('#widgetContainer').width() - 10;
    $('#gridName').jqGrid('setGridWidth', w, true);
}

我在- 10中添加了滚动条以及网格上的小边距。