3

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

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

在此处输入图像描述

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

我已经尝试了很多东西。除其他外,我将applyColumnWidths()位于 Slickgrid 源中的方法设置在外部可用,但这也没有锻炼。

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

4

1 回答 1

3

如果您想提供自定义 HTML 以在标题中呈现,您可以为列的 name 属性提供一个 HTML 字符串,例如

{
    id: 'columnID',
    field: 'columnField',
    name: '<span class="red">Some Red Text</span>'
}

您可以看到这将起作用,因为.updateColumnHeader()仅用于jQuery.fn.html()根据您传入的内容设置标题内容namehttps://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()

于 2013-07-30T19:57:03.227 回答