Jquery 滑动网格是否为父级的100%高度?

Jquery 滑动网格是否为父级的100%高度?,jquery,layout,slickgrid,Jquery,Layout,Slickgrid,我正在尝试与一起使用,我希望SlickGrid占据其父窗格的100%高度 问题是,当SlickGrid被实例化时,它没有行(我的ajax接口的一部分稍后加载到数据中,而不是页面加载),所以高度默认设置为1px(加上标题的高度)。稍后加载数据时,我看不到任何行 我已经尝试将SlickGrid DOM元素设置为height:100%,但这不起作用。即使数据行较少,我如何强制SlickGrid画布占据其所在窗格的100%高度?我将给出一个连我都不喜欢的答案,但我的javascript技能有限,在找到更

我正在尝试与一起使用,我希望SlickGrid占据其父窗格的100%高度

问题是,当SlickGrid被实例化时,它没有行(我的ajax接口的一部分稍后加载到数据中,而不是页面加载),所以高度默认设置为1px(加上标题的高度)。稍后加载数据时,我看不到任何行


我已经尝试将SlickGrid DOM元素设置为
height:100%,但这不起作用。即使数据行较少,我如何强制SlickGrid画布占据其所在窗格的100%高度?

我将给出一个连我都不喜欢的答案,但我的javascript技能有限,在找到更好的解决方案之前,我一直在使用这个解决方案

基本上,我取文档高度,减去slickgrid之外任何其他元素的高度,如下所示:

  $("#id-of-slickgrid-container").height(
      $(document).height() -
      $("#header").outerHeight() -
      $("#nav").outerHeight() -
      $("#footer").outerHeight() - 44
  );

“44”是一个伪造的数字,接近于slickgrid内部使用的额外空间的高度,等等。

我最终使用了UI布局的访问器方法和slickgrid的
resizeCanvas()
方法的组合来解决这个问题。它似乎工作得很好

注意:我的项目已经使用了pubsub,我使用加载模块

因此,在我的网格模块文件中,我订阅了一个方法来接收它所在窗格的新innerHeight,它将其保存到一个局部变量中,然后调用我的
resize()功能:

$.subscribe("units/set_grid_height", function (new_height) {
  grid_opts.height = new_height;
  resize();
});

// ...

// grid = the jQuery element that represents the SlickGrid
// slick = the instantiated slickgrid
function resize() {
  grid.css('height', grid_opts.height);
  slick.resizeCanvas();
}
然后,在我的init js文件(其中定义了布局)中,我为初始状态和每次中心窗格更改设置了正确的发布:

layout = $('body').layout({
  center: { 
    onresize: function (name, el, state, opts, layout_name) { 
      $.publish("units/set_grid_height", [state.innerHeight]);
    }
  }
});

$.publish("units/set_grid_height", [layout.state.center.innerHeight]);

这似乎正是我想要的。我知道这不是一个通用的解决方案,但看起来SlickGrid无法独自完成所有这些任务。

对于像我这样的人,他们遇到了类似的错误,但情况不同:

从-“标记中需要slickgrid容器上的显式宽度和高度,否则网格主体不可见(高度:1px),网格获取网格标头的宽度(宽度:100000px)。”

所以别忘了给主网格div一个宽度和高度


ps:我不认为这适用于这个问题,但这是搜索“slick grid 1px bug”时出现的唯一问题:-/

我接受了Van的答案,并将其调整如下。还有,但至少你不必知道具体的容器

HTML:

JavaScript:

$("#myGrid").height($('#myGridSizer').outerHeight());
grid = new Slick.Grid("#myGrid", dto.data, dto.columns, options);

我希望这个答案仍然有用,我在另一个答案中发现了它:

在Slickgrid选项中添加
自动高度

options = {
       ...
       autoHeight: true
       };

Slickgrid将始终随内容的增长而增长,您可以将父项的高度设置为任何值。

“44”幻数有效。但是没有“幻数”有明确的解决方案吗?使用自动高度设置如何?它可能比这个问题更新。。。
$("#myGrid").height($('#myGridSizer').outerHeight());
grid = new Slick.Grid("#myGrid", dto.data, dto.columns, options);
options = {
       ...
       autoHeight: true
       };