Я использую 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
});
});
}