Javascript 编辑可手持网格的单元格属性

Javascript 编辑可手持网格的单元格属性,javascript,handsontable,Javascript,Handsontable,我有一个可手持的网格,用户可以在其中输入一些值以将它们插入数据库。当他提交表格时,我希望具体的单元格是“只读”的。在本例中,我希望第一列为“只读” 我使用Ajax在数据库中发送数据。在我的回调函数中,我想将单元格属性编辑为“只读” 所以我现在要说的是: var cellProperties={}; var i; for (var i = 0; i < data_traitement.length; i++) { cellProperties.readOnl

我有一个可手持的网格,用户可以在其中输入一些值以将它们插入数据库。当他提交表格时,我希望具体的单元格是“只读”的。在本例中,我希望第一列为“只读”

我使用Ajax在数据库中发送数据。在我的回调函数中,我想将单元格属性编辑为“只读”

所以我现在要说的是:

var cellProperties={};
    var i;
    for (var i = 0; i < data_traitement.length; i++) {

        cellProperties.readOnly = true;
        return cellProperties;
    }
在回调函数中,如果我理解得很好,我必须将此
readOnlyCells
更改为
true

所以我做了这个:

for (var i = 0; i < data_traitement.length; i++) {
        readOnlyCells[[i,0]] = true; //I'm not sure of this line

    }
    hot.render();
for(变量i=0;i
如果您已经设置了
选项,您只需使用热实例和函数
updateSettings()
更新选项即可。它的工作原理如下:

hot.updateSettings({
    columns: newColumns
});
在您的情况下,
newColumns
应该是列的新定义。我建议创建一个返回这个新对象的函数。此对象将在文档页面中定义为。在ajax回调中,您要确保这个新定义的第一列是
readOnly:true
,您就完成了

如果你只想做细胞,可能比这容易。您可以保留单元格坐标图,如下所示:

var readOnlyCells = {};
然后在回调中,添加键值对单元格坐标:
readOnlyCells[[row,col]]=true
。在此之后,您只需确保初始的
单元格
定义如下:

cells: function(row, col, prop) {
    var cellProperties = {};

    if (readOnlyCells[[row,col]]) {
        cellProperties.readOnly = true;
    }

    return cellProperties;
}

就这样。您可能希望更新与列类似的设置,但无需更改代码。

是否可以尝试为此列实现自定义呈现程序?然后可以控制该列中每个单元格的只读

例如:

function customReadOnlyRenderer(instance, td, row, col, prop, value, cellProperties) {

    // your business logic to determine read only property of the cell
    cellProperties.readOnly = true or false;
    Handsontable.TextCell.renderer.apply(this, arguments);
}

在ajax调用之后,更新数据源并调用render。将使用源中的最新数据为此列上的每个单元格调用渲染器。

谢谢,但我不希望整个列为“只读”,我只希望一些单元格:/事实上,用户将插入3行(例如),我希望这3行中的第一列为只读。之后,用户可以添加一些行并反复保存。我只是不希望用户可以更新他已经输入的行。这就是为什么我想使用单元格属性来更改特定行的属性。好的,然后使用
单元格
而不是
您能帮我吗?我试过你的代码,我认为这是个好主意,但它不起作用,所以可能我做错了。所以我编辑了我的帖子来告诉你
function customReadOnlyRenderer(instance, td, row, col, prop, value, cellProperties) {

    // your business logic to determine read only property of the cell
    cellProperties.readOnly = true or false;
    Handsontable.TextCell.renderer.apply(this, arguments);
}