SlickGrid 啥是数据视图?

Posted

技术标签:

【中文标题】SlickGrid 啥是数据视图?【英文标题】:SlickGrid what is a Data View?SlickGrid 什么是数据视图? 【发布时间】:2012-08-21 03:44:36 【问题描述】:

我开始使用 SlickGrid,但对数据视图和网格(启用编辑)之间的区别感到困惑。我在文档中没有找到关于数据视图的一些讨论,尽管那里已经提到过。

请赐教。

【问题讨论】:

【参考方案1】:

DataView 允许在不修改数据或网格的情况下对数据进行排序和过滤。您可以将其视为网格顶部的叠加层,提供与视图相关的功能 - 在某些情况下增强了这些功能。

希望有帮助!

【讨论】:

【参考方案2】:

DataView 是数据源之上的抽象。如果客户端上的所有数据都可用(即在 javascript 数组中),DataView 可以提供许多网格本身没有的有用功能。 (网格缺乏这些功能的事实是设计使然 - SlickGrid 试图保持核心精简和简单,同时鼓励其 API 中的模块化设计和数据抽象。)

DataView 的工作原理是接收您的数据并充当数据提供者,您可以将其传递给 SlickGrid,而不是原始数据数组。例如,如果您将 DataView 分组数据,它会使网格认为“组”行只是常规数据项,因此网格不需要知道它们。 DataView 告诉网格这些项目具有自定义的显示和行为,并提供两者的实现。然后连接 DataView 的 onRowCountChanged 和 onRowsChanged 事件来更新网格,瞧。

以下是 DataView 添加到网格的功能的粗略列表:

分页。 排序。 搜索。 按总计分组。 展开/折叠组。

【讨论】:

也可以直接对网格进行排序。示例:mleibman.github.io/SlickGrid/examples/…【参考方案3】:

简单来说,就是三层:

  Grid
  ----
DataView
  ----
  Data

在底部你有原始数据。这只是一个普通的旧数组。数组中的每一项代表一行数据(在网格中显示为一行)。

DataView 读取数据数组并通过公开几个标准方法使其可用于网格。这样,当网格想要获取用于显示的数据时,它只是通过一种标准方法与数据视图对话。

Grid 是显示组件。它的唯一职责是呈现在屏幕上显示所需输出所需的 html 代码。

网格从不直接访问数据。它只与数据视图对话。这允许数据视图在将数据返回到网格时执行技巧,例如提供用于表示组标题的“幻像”行。

如果您有兴趣,下面的示例只是您能想到的最简单的示例,它使用带有 SlickGrid 的数据视图。

var data = [
   title: "Primer",       rating: "A" ,
   title: "Matrix",       rating: "B" ,
   title: "Transformers", rating: "C" ,
];
var columns = [
   id: "title",  name: "Title",  field: "title" ,
   id: "rating", name: "Rating", field: "rating" 
];
var options = 
  enableColumnReorder: false  // ... whatever grid options you need
;

var dataView = new Slick.Data.DataView();
var grid = new Slick.Grid("#myGrid", dataView, columns, options);

// wire up model events to drive the grid
dataView.onRowCountChanged.subscribe(function (e, args) 
  grid.updateRowCount();
  grid.render();
);
dataView.onRowsChanged.subscribe(function (e, args) 
  grid.invalidateRows(args.rows);
  grid.render();
);

// Feed the data into the dataview
dataView.setItems(data);

【讨论】:

我正在尝试决定是编写自定义 DataView 实现还是编写为默认 DataView 提供 I/O 的单独模型。有没有人构建或看过自定义 DataView?我从没见过,想通读一遍。

以上是关于SlickGrid 啥是数据视图?的主要内容,如果未能解决你的问题,请参考以下文章

在视图控制器之间传递数据 - iOS Xcode - 啥是好方法?

SlickGrid AJAX 数据

Angular Slickgrid是迅雷不及掩耳之势的包装;可自定义的SlickGrid数据网格,它还包括多个样式主题

SlickGrid:使用 DataView 而不是原始数据的简单示例?

mysql中,啥是视图,视图的作用是啥

如何清理 slickgrid 中的行数据?