Мы обновляем как jQuery, так и jqGrid в проекте и обнаружили возможную ошибку в jqGrid.Версии, с которыми мы работаем:
- jQuery 1.4.1 обновлен до 1.7.1
- jqGrid 3.8.2 обновлен до 4.2.0
Мыиспользуют параметр индекса colmodel как для сортировки, так и для поиска / фильтрации.Проблема, которую мы обнаружили, появляется, когда строка индекса содержит точку.Например, «Customer.Name».
$('#grid').jqGrid({
url: 'some/controller/action',
datatype: 'json',
colNames: ['Customer Name'],
colModel: [{ name: 'CustomerName', index: 'Customer.Name' }]
});
$('#grid').jqGrid('filterGrid', '#filter',
{
filterModel: [{ label: 'Customer Name', name: 'CustomerName', stype: 'text' }]
});
Когда используется поиск, браузер создает исключение следующим образом:
Syntax error, unrecognized expression: [name=Customer.Name]
http://localhost:8000/Scripts/jquery-1.7.1.js Line 4179
Исключение происходит из строки 465 в grid.addons.js, который выглядит следующим образом:
447: nm = this.index;
465: v = $("input[name="+nm+"]",self).val();
Код находится внутри каждого оператора и получает значение из colModel / filterModel, поэтому this
- это каждый элемент в этом массиве.
ПослеВ некоторых исследованиях мы обнаружили, что в jQuery 1.5 для селектора атрибута требуются кавычки вокруг значения, которое сетка, похоже, не использует, и, следовательно, происходит сбой при поиске элемента.
Вопрос: есть ли обходной путь для этого?или мы должны опубликовать ошибку в jqGrid и надеяться, что они исправят ее в ближайшее время?
Мы пытались убежать от точки и окружить строку кавычками, но ничего не помогает.