Как получить первый элемент во второй сетке после отправки данных из первой сетки? - PullRequest
0 голосов
/ 21 марта 2019

Я использую Kendo UI.У меня есть 2 вкладки здесь.Каждая вкладка имеет одну сетку.Итак, у меня есть 2 сетки, первая содержит список платежей.Я выбираю каждый пункт с помощью флажка, затем под сеткой есть кнопка.Если я нажму эту кнопку, она вызовет API, который отправляет данные во вторую сетку, сетку инструкций.В сетке инструкций есть столбец с именем номер инструкции.Это автоматически генерируемый номер из серверной части.Я хочу, чтобы мои пользователи знали, какой номер инструкции, после того, как они нажмут эту кнопку.Итак, я создаю простое всплывающее окно, сообщающее им номер инструкции, который был создан только в данный момент.

Вот идея: каждый раз, когда я создаю инструкцию, она будет первым элементом в сетке данных.

После вызова ajax -> создается номер инструкции -> автоматически заполняется первая строка таблицы инструкций -> я обновляю таблицу инструкций -> получаю первый элемент в таблице инструкций -> получаем номер инструкции -> затем покажите его во всплывающем окне.

Он работает нормально, пока у меня медленное соединение.Иногда, при медленном соединении, я получаю второй предмет (который ранее был первым).Почему это могло случиться?Как это исправить?

Я приведу пример с изображениями:

До создания Инструкции

После создания Инструкции

Как вы можете видеть на этих изображениях, после создания инструкции серверная часть сгенерирует новый номер инструкции (21032019KWK) в первой строке таблицы.Иногда возникает проблема, когда я хочу получить первый элемент, вместо 21032019KWK я получаю 21032019ACD.Но когда я проверяю сетку инструкций, 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
        });
    });
}
...