我在支持多种语言的角度应用程序中使用 slickgrid。当所选语言更改时,如何更新列标题。 我的列定义如下所示,我基本上想要的是网格再次调用 myI18N 来更新列标题。
{ id: "myid", name: myI18nFn('idKey'), field: "myid", width: 100}
我有一个角度事件可以检测更改,并且我可以访问那里的网格对象,我只是不确定我需要做什么才能更新列标题
您需要在语言更改时更新
colDef.name
属性,然后触发网格重建标题行(这发生在 SlickGrid 源代码中的 createColumnHeaders
方法中)。最简单的方法是使用 setColumns
调用更新列列表,这会触发整个网格的重新渲染:
function updateColumnHeaders()
{
var cols = grid.getColumns();
for(var i = 0, il = cols.length; i < il; i++)
{
cols[i].name = myI18nFn(cols[i].id);
}
grid.setColumns(cols);
}
您还可以使用下一个 slickgrid 方法:
grid.updateColumnHeader(
columnId: number | string,
title?: string | HTMLElement | DocumentFragment,
toolTip?: string
)
在你的情况下,它看起来像
grid.updateColumnHeader("myid", myI18nFn('idKey'))
。