在Slick.Grid中有一种方法可以将所有数据呈现给数组,以便可以导出吗?

时间:2012-06-16 19:23:13

标签: javascript jquery slickgrid

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格式导出结果,除格式化部分外,我所有这些都有效。

2 个答案:

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