Slick.Grid中是否有办法将所有数据渲染到数组中以便导出?
我能够从我的Slick.Grid实例“mygrid.getData()。getItems()”获取数据,但它只是原始数据而不是格式化数据。
是否有一个函数可用于迭代集合并返回格式化数据?
截至目前,我不得不两次实施格式化程序。
示例:
UnixToDate: (row, cell, value, columnDef, dataContext) ->
moment.unix(value).format("MMM Do YY")
items: [
{id: 1, activity_at: 915148798 },
{id: 2, activity_at: 999148800 }
]
columns: [
{field: 'id', id: 'id', name: 'Id'},
{field: 'activity_at', id: 'activity_at', name: 'Activity', formatter: UnixToDate}
]
@data = new Slick.Data.DataView()
@grid = new Slick.Grid( $('#table'), @data, columns )
@data.setItems(items)
我想知道是否有办法使用格式化的值返回数据。 我认为@ grid.getData()。getItems()会这样做,但它会返回原始数据数组。
返回的数据应如下所示:
data: [
{id: 1, activity_at: "Dec 31st 98" },
{id: 2, activity_at: "Aug 29th 01" }
]
我希望最终用户能够过滤和排列网格,然后以csv格式导出结果,除格式化部分外,我所有这些都有效。
答案 0 :(得分:2)
好的,我写了一个方法来进行导出(用coffeescript编写并使用underscore.js)。我还必须在slick.grid.js中公开getFormatter方法
getFormattedData: (grid) ->
columns = grid.getColumns()
rows = grid.getData().getItems()
_(rows).map (row) ->
h = {}
i = 0
_(columns).each (column) ->
f = grid.getFormatter(row, column)
h[column.id] = f(row, i, row[column.id], column, row)
i += 1
h
在//公共API部分
中添加到slick.grid.js的行"getFormatter": getFormatter,
答案 1 :(得分:0)
设置autoHeight: true
时,将呈现完整的网格,并且可以导出html。
http://mleibman.github.com/SlickGrid/examples/example11-autoheight.html
回答更新的问题:
仅在呈现/显示行时调用格式化程序,因此具有格式化数据的数组永远不存在。来源:https://github.com/mleibman/SlickGrid/blob/master/slick.grid.js#L1291