如何动态调整jqgrid到当前窗口大小?

时间:2013-07-29 21:00:02

标签: javascript jquery jqgrid resize window

如何将jqgrid动态调整为当前窗口大小(基于javascript / jQuery)

最好的例子在这里(TinyMCE): 转到:http://www.tinymce.com/tryit/full.php

然后尝试按CTRL + ALT + F或菜单 - >视图 - >全屏

请帮忙,我对js / jquery有初学者知识(我知道更多的PHP语言)。

这就是我如何调用jqgrid:

$ grid-> renderGrid('#grid','#pager',true,null,null,true,true);

..提前感谢


the idea for resize overlay (div)

如果你理解我,这就是我的意思。

我想在gridNav中添加自定义按钮,以便在放大和普通视图之间切换(就像tinyMCE编辑器一样!!)

我的网格表有很多列(长水平滚动),这就是为什么我想要激怒整个表格。

按钮代码......

$buttonoptions = array("#pager", array(
        "caption"=>"Resize", 
        "onClickButton"=>"js:function(){ ... resize call here ...}", "title"=> "Resize"
   )
);
$grid->callGridMethod("#grid", "navButtonAdd", $buttonoptions);

2 个答案:

答案 0 :(得分:2)

function resizeJqGridWidth(grid_id, div_id, width)
{
    $(window).bind('resize', function() {
        $('#' + grid_id).setGridWidth(width, true); //Back to original width
        $('#' + grid_id).setGridWidth($('#' + div_id).width(), true); //Resized to new width as per window
     }).trigger('resize');
}

setGridWidth(new_width,shrink):动态设置网格的新宽度。

new_width:它将是新的宽度(像素)。

收缩(默认为true):

true - >它将允许根据当前调整大小的jqGrid宽度在网格中调整列的大小。

false - >它将在jqGrid的末尾添加额外的空白列,如果当前调整大小的jqGrid的宽度将超过其设置的jqGrid宽度。

mfs的追求。

答案 1 :(得分:1)

基于display:flex;解决方案可在此处获得:
Plnkr
测试:

  • IE 11,Chrome,Opera - 确定。
  • FF - 显示错误位置的垂直滚动条。
  • Safary - 好的。
希望它有所帮助。


修改 我试图解决同样的问题:有一些容器根据浏览器窗口大小缩小和伸展。
仅CSS解决方案针点:

  • 按照here
  • 所述创建弹性布局
  • 将目标 jqGrid 容器元素也设置为灵活容器,并将 jqGrid 放在那里,下面的css将完成所有魔法。

jqGrid的CSS

    .ui-jqgrid {
      display: flex;
      flex-direction: column;
      flex:1;
      width:auto !important;
    }
    .ui-jqgrid > .ui-jqgrid-view
    {
      display:flex;
      flex:1;
      flex-direction:column;
      overflow:auto;
      width:auto !important;
    }

     .ui-jqgrid > .ui-jqgrid-view,
     .ui-jqgrid > .ui-jqgrid-view > .ui-jqgrid-bdiv {
          flex:1;
          width: auto !important;
    }

    .ui-jqgrid > .ui-jqgrid-pager,
    .ui-jqgrid > .ui-jqgrid-view > .ui-jqgrid-hdiv {
        flex: 0 0 auto;
      width: auto !important;
    }
    /* enable scrollbar */
    .ui-jqgrid-bdiv {
        overflow: auto
    }

用于组织flex布局的CSS:

    .box {
        display: -webkit-box;
        display: -moz-box;
        display: -ms-flexbox;
        display: -webkit-flex;
        display: flex;
        -webkit-box-orient: vertical;
        -moz-box-orient: vertical;
        -ms-flex-direction: column;
        -webkit-flex-direction: column;
        flex-direction: column;
    }
     .boxHeader {
        -ms-flex: 0 0 auto;
        -webkit-flex: 0 0 auto;
        flex: 0 0 auto;
        background-color: green;
    }
     .boxContent {
        -ms-flex: 1 1 auto;
        -webkit-flex: 1 1 auto;
        flex: 1 1 auto;
        -webkit-box-flex: 1.0;
        overflow: auto;
    }
     .boxFooter {
        -ms-flex: 0 1 auto;
        -webkit-flex: 0 1 auto;
        flex: 0 1 auto;
        background-color: cornflowerblue;
    }
    .fullSize {
        width: 100vw;
        height: 100vh;
        margin: 0;
        padding: 0;
    }

最后样本标记:

    <body>
        <!--Flex stuff -->
        <div class="box fullSize">
          <div class="boxHeader" style="background-color:#5fbff3">
            header just to show that this block takes<br> as much as it         needs<br> to display its<br> content
          </div>
          <div class="boxContent box" style="background-color:#D0D0D0;         padding:15px">
             <table id="list"></table>
              <div id="pager"></div>
          </div>
          <div class="boxFooter" style="text-align:right"><span>same as header</span></div>
        </div>

<!-- Flex stuff end -->
    </body>
<。>在.js做

    var grid = $("#list");
    grid.jqGrid({ options});

不需要设置宽度或高度。 (无论如何,他们将被忽略)