结合使用google.visualization.datatable复选框和KnockOut数据绑定

时间:2016-05-04 10:15:08

标签: javascript jquery knockout.js google-visualization google-datatable

我正在将我的“普通”HTML表格转换为Google的DataTable。 主要是因为它会给我固定标题和排序。 感谢Creating advanced KnockOut binding handler for google.visualization.datatable我设法为DataTable创建了一个KnockOut绑定处理程序。 这适用于只读数据。

现在我想转换一个在每一行都有一个复选框和一个输入文本框的表。创建这些表单元素不是问题,但我在它们上使用KnockOut数据绑定。如何将这些数据绑定添加到我的数据表中? 我试过这个:

data.setCell(
    0, 0, "<input type='checkbox' data-bind=checked: ' " + order.inOrder + "'/>"
);

data.setCell(
    0, 0, "<input type='checkbox' data-bind=checked: order.inOrder />"
);

但两者都不起作用。当然我尝试使用谷歌找到答案,但到目前为止还没有运气。

修改 更多背景信息: 我们有一个相当复杂的页面,它使用AJAX从服务器获取一些数据并填充表格。 我们也使用RequireJS,虽然Google.Visualization部分在RequireJS之外,因为我无法将其集成;)

该页面是订单系统向导的一部分,复选框是“不订购”,输入框用于填写库存。该表是:

checkbox|Product name|amount|input box for stock|amount minus stock|price

“下一步”按钮需要保存整个表格,包括复选框和库存的(更新)值。

1 个答案:

答案 0 :(得分:0)

不要认为数据绑定适用于Google图表

即使它会,也看不到多少好处,因为你需要手动加载DataTable

因此,只需提供加载DataTable时所需的值,
类似的东西...
data.setCell(0, 0, "<input type='checkbox' " + ((order.inOrder === true) ? "checked" : "") + "/>");

其他想法......

如果表格图表使用分页按钮,则只渲染当前页面的行,因此必须以某种方式对每个'page'事件进行绑定

使用表格图表中的复选框输入将导致'select'事件在单击表格行时触发