Я считаю, что это не обман.Наоборот, я нахожу это хорошим, так что +1 от меня.
jqGrid внутренне использует метод viewModal
($.jgrid.viewModal
), который показывает большинство диалогов.Метод имеет параметр toTop
, но и delGridRow и editGridRow не используют его, и он будет установлен на toTop:true
.Таким образом, диалоговые окна «Добавить», «Редактировать» и «Удалить» всегда будут отображаться в верхней части сетки, которая может находиться внутри невидимой области.
Чтобы устранить проблему, вы можете определить дескриптор события afterShowForm , которыйизменить позицию диалога.Например,
$("#list").jqGrid('navGrid','#pager', {}, {}, {},
{
afterShowForm: function($form) {
var dialog = $form.closest('div.ui-jqdialog'),
selRowId = myGrid.jqGrid('getGridParam', 'selrow'),
selRowCoordinates = $('#'+selRowId).offset();
dialog.offset(selRowCoordinates);
}
});
В этом примере диалоговое окно будет размещено над выбранной строкой.Код может быть улучшен для случая, когда выбранная строка в последней строке и нижней части диалога находится за пределами окна.Тем не менее, приведенная выше реализация кажется мне лучше, чем установка по умолчанию, потому что пользователь видит диалоговое окно точно над строкой, которую он хочет удалить, и он может переместить диалоговое окно так, чтобы оно было полностью видимым.
Вы можете проверитьпредлагаемое движение диалога удаления на демонстрационной версии .