我想自己渲染Slickgrid的标题单元格,目前我唯一能做到这一点的方法是通过onHeaderCellRendered
回调。这里的问题是,slickgrid(正如回调的名称所示)已经完成了对标题单元格的渲染。
因此,如果我向单元格添加一些内容并且它比以前更宽,那么标题单元格将会像我希望的那样宽,但该列的表格单元格将保持与之前相同的宽度。
grid.onHeaderCellRendered.subscribe(function(e, args){
//adding some stuff to args.node, setting the width of args.node to something wider via
//$(args.node).width(...);
});
这就是它的外观。 (绿色=正确宽度,红色=旧宽度)。
我的问题是,如果有办法告诉网格(嘿网格我自己渲染标题单元格,请更新列宽)。
我已经尝试了很多东西。除此之外,我在外面提供了位于Slickgrid来源的方法applyColumnWidths()
,但这也没有锻炼。
如果答案是“没有办法做到这一点”,我会尝试自己实现这一点。
答案 0 :(得分:3)
如果要在标题中提供要呈现的自定义HTML,可以为列的名称属性提供HTML字符串,如
{
id: 'columnID',
field: 'columnField',
name: '<span class="red">Some Red Text</span>'
}
您可以看到这会有效,因为.updateColumnHeader()
只使用jQuery.fn.html()
根据您为name
传入的内容设置标题内容。 https://github.com/mleibman/SlickGrid/blob/master/slick.grid.js#L494
如果要在呈现列之后更改列的宽度,则应该查看可拖动列的大小调整是如何实现的,然后重新调整它。 https://github.com/mleibman/SlickGrid/blob/master/slick.grid.js#L848
我的猜测是,调用已曝光的grid.autosizeColumns()
会比调用applyColumnWidths()
更好,因为它也会调用applyColumnHeaderWidths()