Я знаю, что вы уже решили проблему, но я столкнулся с той же проблемой в своем проекте и хотел бы предложить свое решение.
Сначала я объявляю настраиваемый форматер для моего столбца select (в данном случае, столбца 'username').
$.extend($.fn.fmatter, {
selectuser: function(cellvalue, options, rowdata) {
var userdata;
$.ajax({
url:'dropdowns/json/user',
async:false,
dataType:'json',
cache:true,
success: function(data) {
userdata = data;
}
});
return typeof cellvalue != 'undefined' ? userdata[cellvalue] : cellvalue ;
}
});
Этот форматтер загружает отображение идентификатора и пользователя в этом случае и возвращает имя пользователя для определенного значения ячейки. Затем я установил для параметра formatter:'selectuser'
значение colModel
столбца, и оно работает.
Конечно, это делает один запрос json на строку, отображаемую в сетке. Я решил эту проблему, установив 10 секунд кэширования в заголовки моих ответов JSON, например:
private function set_caching($seconds_to_cache = 10) {
$ts = gmdate("D, d M Y H:i:s", time() + $seconds_to_cache) . " GMT";
header("Expires: $ts");
header("Pragma: cache");
header("Cache-Control: max-age=$seconds_to_cache");
}
Я знаю, что это решение не идеально, но оно подходило для моего приложения. Хиты кэша обслуживаются браузером мгновенно, и сетка течет плавно. В конечном счете, я надеюсь, что встроенный форматер select
будет исправлен для работы с данными json.