Mi problema: Cuando arrastro una fila en jqGrid, y completa una función de recarga personalizada, las celdas de la grilla, anteriormente todas las anchuras variables se configuran cuando se define la grilla, se cambian de tamaño para que todos tengan el mismo ancho. Esto sucede en los navegadores Webkit pero no en Firefox.jqGrid - Arrastrando una fila para clasificarla anula el ancho de las celdas
Código: He arrastrando a ordenar la habilitada en una cuadrícula:
$mygrid.jqGrid(
'sortableRows', {
update: function(e, ui) {
sort_grid(e, ui);
}
}
);
Como se puede ver que tengo una función de clasificación pedido a la fricción completa, sort_grid
. Aquí está:
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
}
})
}
}
Una vez que llegué que recarga gatillo $('#' + current_grid).trigger("reloadGrid");
y recarga termina la red cuenta ahora con anchuras incorrectos en las celdas de la rejilla (pasan de ser de diferentes anchuras para todo ser del mismo ancho).
Cuando la rejilla se creó originalmente había anchuras definidas de la manera normal jqGrid:
colModel:[
{name:'one', index:'one', sortable:true, width:45},
{name:'two', index:'two', sortable:true, width:180},
]
pero después de volver a cargar las anchuras se restablecen la cuadrícula ser todos de la misma anchura (yo supongo que esta es la anchura total de la cuadrícula se divide de manera uniforme sobre el número total de celdas en la fila). Entonces, ¿tengo que establecer estos anchos explícitamente de nuevo, tal vez con algo así como lo que se llama después de que la red se recarga?
$('.grid').setGridParam({
colModel:[
{name:'one', index:'one', sortable:true, width:45},
{name:'two', index:'two', sortable:true, width:180},
]
});
He intentado el arreglo anterior, la redefinición de los colModels después de recarga y establecer explícitamente los anchos, pero no tuvo ningún efecto. Más raro, si entro en la consola del navegador y establezco los anchos con javascript, tampoco tiene ningún efecto. Eso me tiene perplejo.
Por desgracia para mí parece que el jqGrid "Hombre Respuesta" (Oleg) no está cerca ... lol.
He intentado ambos, en realidad. Todavía sin suerte. Por ahora, he recurrido a la recreación completa de la grilla, pero pasando los parámetros necesarios para ponerlo en el estado que necesito. Dolor en el trasero, pero funciona. – Lothar