我使用Kendo UI。我在这里有2个标签。每个选项卡都有一个网格。因此,我有2个网格,第一个包含付款清单。我通过复选框选择每个项目,然后在网格下方有一个按钮。如果单击该按钮,它将调用将数据发送到第二个网格的API,即指令grid。指令网格中有一列称为指令编号。它是从后端自动生成的数字。我想让我的用户在单击该按钮后知道指令号是什么。因此,我创建了一个简单的弹出窗口,告诉他们当前已创建的指令号。
这里是个主意: 每当我创建一条指令时,它将成为数据网格中的第一项。
调用ajax之后->指令编号创建->自动填充指令网格的第一行->我刷新指令网格->获取指令网格上的第一项->获取指令编号->然后显示弹出窗口。
直到我的连接速度变慢之前,它都可以正常工作。有时,在连接速度较慢的情况下,我会得到第二项(以前是第一项)。为什么会发生这种情况?如何解决?
我为您举例说明图像:
正如您在这些图像中看到的那样,在创建指令后,后端将在网格的第一行中生成新的指令号(21032019KWK)。问题有时是当我想获得第一件商品时,我得到的是21032019ACD而不是21032019KWK。但是当我检查指令网格时,21032019KWK已经在第一行了。而且我注意到它仅在慢速连接中发生。请帮助我修复此错误。谢谢
我正在使用公司的框架,因此需要修改代码。恐怕不能在这里分享。因此,其中一些我将其编写为伪代码。
submitInstructionPayment: function () {
var id = $("[name='idsToSubmit']").val().split(",");
var ids = id.map(x => {
return Number(x)
})
var idb = Number($("[name='idbToSubmit']").val())
xg.ajax({
method: 'POST',
url: apiLink,
data: JSON.stringify({
"ids": ids,
"idb": idb
}),
dataType: 'json',
contentType: 'application/json',
}).done(function (resp) {
$('.paymentGrid').data('kendoGrid').dataSource.page($('.paymentGrid').data('kendoGrid').dataSource.page());
$('.instructionGrid').data('kendoGrid').dataSource.page(1);
refresh('instructionGrid');
//give a time for instruction grid to load a new data
setTimeout(function(){
refresh('instructionGrid');
//grid instance:
var instructionGrid = grid.instance('instructionGrid');
var data = instructionGrid.dataSource.data()[0]; //get new item on the instruction grid
var instructionNumber = data.instructionPayNumber; //get instruction number
message({
text: "Instruksi Bayar berhasil dibuat dengan No. Instruksi: " + instructionNumber
})
}, 1500)
refresh('instructionGrid');
}).fail(function (jqXHR, status, err) {
message({
text: jqXHR.responseJSON.message
});
});
}