gpt4 book ai didi

javascript - Slickgrid - 如何获取编辑单元格的值?

转载 作者:行者123 更新时间:2023-11-30 08:34:14 27 4
gpt4 key购买 nike

我想让我的代码能够在单元格更改时立即更新数据库表。但是,我可以获得更改后的单元格的值,而不是下一个单元格的数据。

我已经尝试过但没有成功的方法:

grid.onCellChange.subscribe(
function (e, args) {
//alert(data[args.row][grid.getColumns()[args.cell].field]);
//alert(grid.getColumns()[args.cell].name);
//alert(args);
<%
updateDatabase("UPDATE table1 "+
"SET "+
" col1="+data[args.row][grid.getColumns()[args.cell].field]+" "+
"WHERE "+
" col2="+???)")
%>
}
);

如何获取我可以在 where 子句中使用的下一列的值?

最佳答案

解决您的问题:

如果你查看官方SlickGrid Editing演示,您可以尝试以下操作以基本了解网格编辑的工作原理。打开您的 JS 调试器并使用以下命令订阅网格 onCellChange 事件:

grid.onCellChange.subscribe(
function (e,args) {
console.log('row: ' + args.row + ' cell: ' + args.cell)
});

网格的onCellChange 事件args 参数对象包含两个属性:

  • 细胞

现在编辑任何单元格并保留刚刚编辑的单元格。这很重要,因为此事件只会在 blur 事件上触发。

在控制台日志中,您将看到例如:

row: 6 cell: 1

寻址您的数据对象:

我发现您如何解决您的数据源的唯一方法是仅使用 eval()hackish 方式.有关对象属性访问的更多信息,您可以查看 this回答。


一点 Javascript 行话:

实际eval()使用给定的 fieldnameproperty name 寻址数据对象的命令是:

eval('data[args.row]'+'.'+columns[args.cell].field)

简化后它将评估表示为字符串的 JavaScript 代码,在此 SlickGrid Editing example它会变得好像你会写:

data[6].title

所以概念验证代码是:

grid.onCellChange.subscribe(
function (e,args) {
console.log(eval('data[args.row]'+'.'+columns[args.cell].field))
});

这将返回当前编辑单元格的值。例如,更改 args.cell+1 将返回您网格数据源中的下一个单元格值。当然,您应该始终检查 columns.length 属性以将列索引键保持在数组边界内。


关于您对 updateDatabase 调用的想法:为什么您要在每次触发此事件后更新数据库?建议你看看官方Composite editor具有编辑表单的演示。

我强烈建议的另一件事是,您不要服务器端代码隐藏代码直接写入javascript 代码块。例如,您可以让它使用 ajax post .

我推荐这个的原因是因为这样你就可以用separated responsibilities来分离函数了。 .仅通过坚持这一原则本身就可以使您拥有更清晰的代码,而且您只给出了一个更改的理由。它也可能有帮助 testing你的功能更容易。

关于javascript - Slickgrid - 如何获取编辑单元格的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33489073/

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