В связанном вопросе я спросил, как отфильтровать и автоматически выбрать данную строку в jqGrid.В настоящее время у меня есть решение для этого:
$(function () {
$('.relatedrecipe').click(function () {
// store off the value of the related recipe I want to switch to
var recipe = $(this).data('recipename');
// clear any filters on the grid
setTimeout(function () {
$("#recipegrid")[0].clearToolbar();
}, 50);
// set the recipe filter to the related recipe name and trigger the filtering
setTimeout(function () {
$('#gs_RecipeName').val(recipe);
$('#recipegrid')[0].triggerToolbar();
}, 200);
// auto-select the first row
setTimeout(function () {
var firstRowID = $('#recipegrid').jqGrid('getDataIds')[0];
$('#recipegrid').setSelection(firstRowId, true);
}, 500);
});
}
Что мне не нравится в этом решении (я делаю так, как будто оно предоставило мне решениеЭто то, что я, по сути, ставлю в очередь кучу функций, которые будут выполняться в будущем, на 50 мс, 200 мс и 500 мс.Это выглядит как потенциально проблематичное решение, основанное на правильной настройке времени, поэтому мне оно не очень нравится.
Я рассмотрел вложение этих функций одна в другую, по 50 мсек для каждой.Что-то вроде:
$(function () {
$('.relatedrecipe').click(function () {
// store off the value of the related recipe I want to switch to
var recipe = $(this).data('recipename');
// clear any filters on the grid
setTimeout(function () {
$("#recipegrid")[0].clearToolbar();
// set the recipe filter to the related recipe name and trigger the filtering
setTimeout(function () {
$('#gs_RecipeName').val(recipe);
$('#recipegrid')[0].triggerToolbar();
// auto-select the first row
setTimeout(function () {
var firstRowID = $('#recipegrid').jqGrid('getDataIds')[0];
$('#recipegrid').setSelection(firstRowId, true);
}, 50);
}, 50);
}, 50);
});
}
Это лучше?Я изменил свой код, чтобы сделать это таким образом, и он, кажется, тоже работает, но есть ли лучший способ сделать это?
Шаги должны быть выполнены в этом порядке, но я считаю, что должно пройти некоторое время, чтобы закончить каждый из первых двух разделов, прежде чем приступить к третьему.Есть мысли по этому поводу?