slickgrid - 如何以编程方式设置或更改具体单元格的值?
问题描述
使用纯数组作为数据源(不是 DateView)来初始化 SlickGrid,我想在特定行/列(单元格)上创建网格后更改一个值。
这是一个简单的例子,也可以作为一个工作的 JSFiddle找到,例如,我想将第 3 行(“任务 2”)上的“持续时间”的值从“5 天”更改为“7 天”。
<div id="myGrid" style="width:400px;height:400px;"></div>
<script>
var grid;
var columns = [
{id: "title", name: "Title", field: "title"},
{id: "duration", name: "Duration", field: "duration"},
{id: "%", name: "% Complete", field: "percentComplete"},
{id: "start", name: "Start", field: "start"},
{id: "finish", name: "Finish", field: "finish"},
{id: "effort-driven", name: "Effort Driven", field: "effortDriven"}
];
var options = {
enableCellNavigation: true,
enableColumnReorder: false
};
$(function () {
var data = [];
for (var i = 0; i < 500; i++) {
data[i] = {
title: "Task " + i,
duration: "5 days",
percentComplete: Math.round(Math.random() * 100),
start: "01/01/2009",
finish: "01/05/2009",
effortDriven: (i % 5 == 0)
};
}
grid = new Slick.Grid("#myGrid", data, columns, options);
grid.setSelectionModel(new Slick.CellSelectionModel());
/* needed method */
grid.setCellValue(2, 1, "7 days");
/* or */
grid.setCellValue(2, "duration", "7 days");
})
</script>
它看起来像一个方法
grid.setCellValue(row, column, value);
不存在。
有没有一种方法(或我还没有找到的现有方法)可以在不使用 DataView 的情况下实现这一点?
解决方案
只需使用
data[2].duration = "7 Days";
然后刷新网格:
grid.invalidateAllRows();
grid.render();
网格只有显示相关的辅助方法,尽管您可以使用grid.getData()
. 编辑器,如果您使用它们,包含从行 ( data[n]
) 中提取值并将其写入编辑器 UI 的代码,然后以另一种方式返回。
推荐阅读
- delphi - 如何用变量命名计时器
- android - Camera2:从已创建的 CameraCaptureSession 中删除 Surface
- python - 熊猫,搜索真的很难吗?
- python - 运行 Airflow API 以触发 DAG 时出现警告
- angular - Rxjs / Angular 8:调用 Subscription.unsubscribe() 时不会触发 HTTPHandler
- flutter - 如何更改 raiseButton onPressed 的颜色?
- python - 如何创建自己的标点符号列表以在 python 中删除
- java - 已在类路径上的插件的插件请求不得包含版本
- php - PHP 警告:session_start():无法读取会话数据:文件(路径:C:\inetpub\tmp)-Windows Server 2016
- mysql - 选择更少的列会加快我的查询速度吗?