为我解决了这个问题。 这就是我在做的事情: 1.初始化网格 2.将数据附加到其中 3.使用包含网格的div的模态来呈现它
为了解决我这样做了: 1.使用包含网格的div的模态来呈现它 2.初始化网格 3.附加数据
我能够在bootstrap 3(一个环境中)中使用它 box-sizing 被设置为 border-box )只是通过申请 box-sizing: content-box 到了 .slick-header-column 。
box-sizing
border-box
box-sizing: content-box
.slick-header-column
.slick-header > .slick-header-columns > .slick-header-column { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; }
修改时要小心 border 的性质 .slick-header-column 。我可以通过设置颜色来删除右边的边框 transparent :
border
transparent
.slick-header > .slick-header-columns > .slick-header-column:last-child { border-right-color: transparent; }
的 注意 强> :你可以使用选择器特性 - 你要覆盖的选择器是:
.slick-header-column.ui-state-default { ... }
这些解决方案都不适用于我,可能是因为SlickGrid的代码自2012年以来发生了变化:) 我找到了解决方案 岗位 ,它与@ Wex相似,但差别很小:
.slickgrid, .slickgrid *, .slick-header-column { box-sizing: content-box; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; }
哪里 .slickgrid 是网格容器元素的选择器。
.slickgrid
这是支持的,不应该发生。事实上,大多数例子(包括 http://mleibman.github.com/SlickGrid/examples/example1-simple.html )具有相同的实现只是为了确保它正常工作。
你能加一个jsfiddle.net repro吗?
使用JQuery动态显示/隐藏网格时遇到了类似的问题 .show() 和 .hide() 。
.show()
.hide()
如果你创建了 div 标记 display: none (因此它最初是隐藏的)网格列不能正确初始化。为了解决这个问题,我创建了div标签 visibility: hidden 并在使用之前删除此样式 .hide() 和 .show() 方法。
div
display: none
visibility: hidden
我的代码看起来大致如下:
<div id="mygrid" style="visibility: hidden"></div> $grid = $("#mygrid") grid = new Slick.Grid($grid, gridData, gridColumns, gridOptions); // Hide grid by default, remembering to remove the visibility style $grid.hide(); $grid.css("visibility", "visible"); // You can now show and hide the grid using normal jQuery methods $grid.show(); $grid.hide();
一旦它被初始化和 visibility: hidden; 财产被删除,我正在使用 .hide() 和 .show() 但我怀疑如果你操纵它会有效 display: none; 如果您不使用JQuery,则直接归属。
visibility: hidden;
display: none;
希望这可以帮助。
我有完全相同的问题,在阅读了@Premanshu和@Tin的答案后,我发现了一条不同的路线来解决它。
基本上你需要跳过一个事件周期,让DOM在你显示网格之前赶上来,这样就可以找到合适的列宽。我用setTimeout来做。
var myGrid = $("<div id='myGrid' style='width:600px;height:500px;'></div>"); grid = new Slick.Grid(myGrid, data, columns, options); // ... later on, append the container to the DOM and initialize SlickGrid setTimeout(function(){ myGrid.appendTo(that.$el); grid.init(); },1);
我在使用twitter bootstrap css的页面上使用它时遇到了类似的问题。解决方案是将框大小覆盖到内容框
*,*:之前,*:之后{ -webkit-box-sizing:content-box; -moz-box-sizing:content-box; box-sizing:content-box; }
可能应该弄清楚究竟哪些类真正需要它,但这对我来说是有条不紊的。