从第一个网格发送数据后如何在第二个网格上获取第一项?

时间:2019-03-21 09:34:25

标签: javascript jquery ajax kendo-ui kendo-grid

我使用Kendo UI。我在这里有2个标签。每个选项卡都有一个网格。因此,我有2个网格,第一个包含付款清单。我通过复选框选择每个项目,然后在网格下方有一个按钮。如果单击该按钮,它将调用将数据发送到第二个网格的API,即指令grid。指令网格中有一列称为指令编号。它是从后端自动生成的数字。我想让我的用户在单击该按钮后知道指令号是什么。因此,我创建了一个简单的弹出窗口,告诉他们当前已创建的指令号。

这里是个主意: 每当我创建一条指令时,它将成为数据网格中的第一项。

调用ajax之后->指令编号创建->自动填充指令网格的第一行->我刷新指令网格->获取指令网格上的第一项->获取指令编号->然后显示弹出窗口。

直到我的连接速度变慢之前,它都可以正常工作。有时,在连接速度较慢的情况下,我会得到第二项(以前是第一项)。为什么会发生这种情况?如何解决?

我为您举例说明图像:

Before I create Instruction

After I create Instruction

正如您在这些图像中看到的那样,在创建指令后,后端将在网格的第一行中生成新的指令号(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
        });
    });
}

0 个答案:

没有答案