Во встроенном редактировании перед редактированием он создает внутренне массив (savedRow
) и заполняет его значениями редактируемых полей, поэтому я могу получить доступ к этим значениям.jqGrid - вопросы редактирования формы
Я хотел бы знать, если в редакторе формы есть что-то похожее на это, потому что мне нужно получить доступ к значениям полей до того, как редактирование будет завершено, чтобы выполнить проверку, прежде чем поля будут «сохранены» в базы данных.
Кто-то может мне помочь?
EDITED:
Я здесь вывешивать часть моего кода (код одного поля), и я пытаюсь проверить как в пути (рядные редактирования и формы редактирования) , Для встроенное редактирование Я проверяю использование dataEvents
и там я использую savedRow
для доступа к данным, которые еще не были сохранены. Но когда я пытаюсь редактировать с помощью редактирования формы из-за использования savedRow, это показывает мне ошибку: savedRow is not defined
. В случае этого поля editrules
соответствует тому, что я хочу сделать, но я не знаю, произойдет ли это во всех этих полях.
{ name: 'ac_fd', index: 'ac_fd', width: 50, editable: true,
formatter: 'number', editrules: { number:true, required:true, minValue: 0.1,
maxValue: 1.0 }, formatoptions: { decimalPlaces: 1, decimalSeparator: '.'},
editoptions: {
dataEvents: [ {
type: 'blur', fn: function(e) {
var savedrow = $("#list").getGridParam('savedRow');
console.log($(this).val());
if($(this).val() != savedrow[0]['ac_fd']) {
var eid='#' + savedrow[0]['id'] + '_ac_fd';
var val_fd=$(this).val();
var fd_min=0.1;
var fd_max=1.0;
if(isNaN(val_fd) || val_fd > fd_max || val_fd < fd_min) {
setTimeout(function(){
$(eid).focus().select();
},600);
$(eid).qtip({
content: {
text: 'Fator de Demanda deve ser um <b>número</b>
entre <b>' + fd_min.toFixed(1) + '</b> e <b>'
+ fd_max.toFixed(1) + '</b>.',
title: {
text: 'Atenção:',
button: true
}
},
show: {
event: false,
ready: true,
effect: function() {
$(this).stop(0, 1).fadeIn(400);
},
delay: 0,
},
hide: {
event: false,
effect: function(api) {
$(this).stop(0, 1).fadeOut(900).queue(function() {
api.destroy();
});
},
},
style: {
classes: 'qtip-red qtip-rounded trif_tip_err',
tip: {
width: 10,
height:12
}
},
position: {
my: 'bottom left',
at: 'top center',
},
events: {
render: function(event, api) {
tip_timer.call(api.elements.tooltip, event);
}
}
});
}
}
}
} ]
}
},
Так что если dataEvents
обычен и используются для трех форм редактирования, где я могу сделать этот тип проверки (с использованием QTIP слишком, и я хочу, чтобы эта проверка используется в инлайн редактирования тоже)?
Спасибо за ответ :) Hummm Я думал, что редактирование формы работает, как в встроенном редактировании, но теперь я понял. Большое спасибо @ Олег! :) – mailazs
@mailazs: Добро пожаловать! Одна из больших проблем jqGrid заключается в том, что он содержит много дубликатов кода или многие близкие, но не одни и те же реализации одних и тех же вещей.Встроенное редактирование, редактирование ячеек и редактирование форм имеют только часть общих функций, таких как 'createEl',' bindEv' и 'checkValues' (из [модуля] (https://github.com/tonytomov/jqGrid/blob/master/ js/grid.common.js). Самая основная работа содержит * различную реализацию во всех трех режимах редактирования. – Oleg
Huuumm Я думаю, они могли подумать о реализации основных функций во всех трех режимах, как в этом случае ... они мог бы реализовать что-то, что позволяет вам проверять поле по полю перед отправкой формы. Было бы очень полезно. :) У меня возникли проблемы с этими валидациями, потому что я использую 'dataEvents' для проверки на встроенное редактирование , а в 'dataEvents' я использую' savedRow', поэтому это создает мне проблему, когда я собираюсь использовать редактирование формы :(У вас есть какое-то предложение для меня? – mailazs