gpt4 book ai didi

slickgrid - 使用 Slickgrid 验证 onCellChange

转载 作者:行者123 更新时间:2023-12-04 06:23:47 24 4
gpt4 key购买 nike

我刚刚开始使用 slickgrid(作者 btw 的++) - 遇到了一些小问题 - 我想使用上下文编辑动态更新某些字段。编辑完成后,我希望将其发送到服务器,该服务器也应该验证发送的内容。如果出现错误,我想以与 validatr 事件的工作方式类似的方式处理错误?例如突出显示单元格并且在它有效之前不让用户移动,但是我不明白我该怎么做?对此的任何建议将不胜感激!

到目前为止的代码...

grid.onCellChange.subscribe(function(e, args) {
var item = args.item;
var column = args.cell;
var row = args.row;
var value = data[args.row][grid.getColumns()[args.cell].field];
var id = args.item.id;
var field = grid.getColumns()[args.cell].field;
var dataString = "id="+id+"&field="+field+"&value="+value;
var status = false;
$.ajax({
type: "POST",
url: "/en/<?php echo $this->controller; ?>/updateattribute/&callback=?'",
data: dataString,
dataType: "json",
success: function(a) {
console.log(data);
if(a.status == true) {
status = true;
} else {
status = false;
}
return false;
}
});
if(!status) {
return false;
}
grid.invalidateRow(data.length);
data.push(item);
grid.updateRowCount();
grid.render();
});

非常感谢

最佳答案

默认情况下,Ajax 请求是异步的,这意味着

if(!status) {
return false;
}
grid.invalidateRow(data.length);
data.push(item);
grid.updateRowCount();
grid.render();

可能会在 success 之前执行打回来。几个不同的解决方案:
  • 使 ajax 请求同步( 不推荐 ):
    $.ajax({ ... async: false, ...})
  • 将 ajax 请求后面的所有代码放入 successcomplete打回来。像这样的东西(未测试):
    grid.onCellChange.subscribe(function(e, args) {
    // snip...

    $.ajax({
    type: "POST",
    url: "/en/<?php echo $this->controller; ?>/updateattribute/&callback=?'",
    data: dataString,
    dataType: "json",
    success: function(a) {
    console.log(data);
    if(a.status) {
    grid.invalidateRow(data.length);
    data.push(item);
    grid.updateRowCount();
    grid.render();
    }
    }
    });
    });

  • jQuery 的 deferred object也可以提供一种干净的方式来写这个。

    关于slickgrid - 使用 Slickgrid 验证 onCellChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6253320/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com