Я также дразнил бы базу данных и проверил бы, что запросы - то, что Вы ожидали. Существует риск, что тест проверяет несправедливость sql, но это было бы обнаружено в интеграционных тестах
Как вы заявили, согласно документации jqGrid для getCell и getRowData:
Не используйте этот метод при редактировании строки или ячейки. Это вернет содержимое ячейки, а не фактическое значение элемента ввода
. Поскольку ни один из этих методов не будет возвращать ваши данные напрямую, вам придется использовать их для возврата самого содержимого ячейки, а затем его синтаксического анализа, возможно, с помощью jQuery. Было бы неплохо, если бы будущая версия jqGrid могла предоставить средства для выполнения части этого синтаксического анализа и / или предоставить API, чтобы сделать его более простым. Но с другой стороны, действительно ли этот вариант использования возникает так часто?
В качестве альтернативы, если вы можете более подробно объяснить свою исходную проблему, могут быть другие варианты.
Вы можете использовать getCol для получения значений столбцов в виде массива, а затем индексировать его по интересующей вас строке.
var col = $('#grid').jqGrid('getCol', 'Sales', false);
var val = col[row];
Вот пример базового решения с пользовательской функцией.
ondblClickRow: function(rowid) {
var cont = $('#grid').getCell(rowid, 'MyCol');
var val = getCellValue(cont);
}
...
function getCellValue(content) {
var k1 = content.indexOf(' value=', 0);
var k2 = content.indexOf(' name=', k1);
var val = '';
if (k1 > 0) {
val = content.substr(k1 + 7, k2 - k1 - 6);
}
return val;
}
try subscribing to afterEditCell event it will receive (rowid, cellname, value, iRow, iCol) where value is your a new value of your cell
Я думаю, что лучшим решением, чем использование getCell, который, как вы знаете, возвращает некоторый html в режиме редактирования, является использование jquery для прямого доступа к полям. Проблема с попыткой синтаксического анализа, как это делаете вы, заключается в том, что он будет работать только для полей ввода (а не для таких вещей, как выбор), и он не будет работать, если вы выполнили некоторые настройки полей ввода. Следующее будет работать с входными данными и элементами выбора и представляет собой только одну строку кода.
ondblClickRow: function(rowid) {
var val = $('#' + rowid + '_MyCol').val();
}
Думаю, расширение этого поможет вам. получение-исходных-данных-строки-из-jqgrid