Slickgrid中的自定义标题单元格渲染

时间:2013-07-23 11:44:39

标签: jquery-ui slickgrid

我想自己渲染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(...);
});

这就是它的外观。 (绿色=正确宽度,红色=旧宽度)。

enter image description here

我的问题是,如果有办法告诉网格(嘿网格我自己渲染标题单元格,请更新列宽)。

我已经尝试了很多东西。除此之外,我在外面提供了位于Slickgrid来源的方法applyColumnWidths(),但这也没有锻炼。

如果答案是“没有办法做到这一点”,我会尝试自己实现这一点。

1 个答案:

答案 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()