Моя проблема: Когда я перетаскиваю строку в jqGrid, и она завершает пользовательскую функцию перезагрузки, ячейки сетки, ранее все переменной ширины, заданной при определении сетки, изменяются во всехбыть такой же ширины.Это происходит в браузерах Webkit, но не в Firefox.
Код: У меня включено перетаскивание для сортировки по сетке:
$mygrid.jqGrid(
'sortableRows', {
update: function(e, ui) {
sort_grid(e, ui);
}
}
);
Как видите, у меня естьфункция сортировки, вызываемая при перетаскивании, sort_grid
.Вот оно:
function sort_grid(e, ui) {
var current_grid = $(ui.item[0]).closest('table').attr('id');
var $current_row, moved_id, next_id, next_priority;
var $moved_row = $('#' + current_grid + ' tr');
var cnt = 0;
this_id = ui.item[0].id;
$moved_row.each(function () {
if ($(this).attr('id') == this_id) {
$current_row = $moved_row.eq(cnt);
moved_id = $current_row.attr("id");
next_id = $current_row.next().attr("id");
next_priority = $current_row.next().children("td:first").attr("title");
}
cnt++;
});
if ( typeof moved_id !== 'undefined' ) {
if ( next_priority == 'undefined' ) {
next_priority = '999';
}
$.ajax({
url:my_url,
type:"POST",
data:"moved_id=" + moved_id + "&next_id=" + next_id + "&next_priority=" + next_priority,
success: function(data) {
$('.grid').setGridParam({loadonce:false, datatype:'json'}); // force grid refresh from server
$('#' + current_grid).trigger("reloadGrid");
$('.grid').setGridParam({loadonce:true}); // reset to use local values
}
})
}
}
После того, как я нажал на этот триггер перезагрузки $('#' + current_grid).trigger("reloadGrid");
и завершил перезагрузку, сетка теперь имеет неправильную ширину ячеек в сетке (они переходят от разной ширины ко всем одинаковымwidth).
Когда сетка была первоначально создана, она имела ширину, определенную обычным способом jqGrid:
colModel:[
{name:'one', index:'one', sortable:true, width:45},
{name:'two', index:'two', sortable:true, width:180},
]
, но после перезагрузки сетки все ширины сбрасываются, все они имеют одинаковую ширину (IПредположим, что это общая ширина сетки, которая равномерно делится на общее количество ячеек в строке).Итак, мне нужно снова явно установить эти значения ширины, возможно, с помощью чего-то вроде следующего, вызываемого после перезагрузки сетки?
$('.grid').setGridParam({
colModel:[
{name:'one', index:'one', sortable:true, width:45},
{name:'two', index:'two', sortable:true, width:180},
]
});
Я попытался исправить это, переопределив colModels после перезагрузки и явно установивширины, но это не имело никакого эффекта.Более странно, если я захожу в консоль браузера и устанавливаю ширину с помощью javascript, это также не имеет никакого эффекта.Это поставило меня в тупик.
К сожалению, для меня это выглядит так, как будто jqGrid "Answer Man" ( Oleg ) отсутствует ... lol.