1

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 格式导出结果,除了格式化部分之外,我已经完成了所有这些工作。

4

2 回答 2

2

好的,我编写了一个导出方法(用咖啡脚本编写并使用 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

在 // Public API 部分向 slick.grid.js 添加行

"getFormatter": getFormatter,
于 2012-06-19T00:50:26.713 回答
0

当你设置autoHeight: true完整的网格被渲染并且可以导出 html。

http://mleibman.github.com/SlickGrid/examples/example11-autoheight.html

回答更新的问题:

格式化程序仅在呈现/可见行时调用,因此具有格式化数据的数组永远不存在。来源:https ://github.com/mleibman/SlickGrid/blob/master/slick.grid.js#L1291

于 2012-06-17T14:21:09.897 回答