Il mio problema: Quando trascino una riga in jqGrid e completa una funzione di ricarica personalizzata, le celle della griglia, in precedenza tutte di larghezza variabile impostate quando la griglia è definita, sono ridimensionate per essere tutte della stessa larghezza. Questo succede nei browser Webkit ma non in Firefox.jqGrid - Trascinando una riga per ordinarlo cancella le larghezze cella
Codice: ho trascinando per ordinare abilitato su una griglia:
$mygrid.jqGrid(
'sortableRows', {
update: function(e, ui) {
sort_grid(e, ui);
}
}
);
Come potete vedere ho una funzione di ordinamento invitato trascinamento completo, sort_grid
. Qui è:
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
}
})
}
}
volta mi ha colpito che ricarica grilletto $('#' + current_grid).trigger("reloadGrid");
e ricalibratura finisce la griglia ha ora larghezze non corrette le celle della griglia (vanno dall'essere varie larghezze a tutto essendo la stessa larghezza).
Quando la griglia si creava era larghezze definito nel normale modo jqGrid:
colModel:[
{name:'one', index:'one', sortable:true, width:45},
{name:'two', index:'two', sortable:true, width:180},
]
ma dopo la griglia ricaricare le larghezze vengono resettati tutti la stessa larghezza (suppongo questo è la larghezza totale di la griglia viene divisa equamente sul numero totale di celle nella riga). Quindi, devo impostare di nuovo queste larghezze in modo esplicito, magari con qualcosa di simile al seguente, dopo il ricaricamento della griglia?
$('.grid').setGridParam({
colModel:[
{name:'one', index:'one', sortable:true, width:45},
{name:'two', index:'two', sortable:true, width:180},
]
});
ho provato la correzione di cui sopra, ridefinendo i colModels dopo ricarica e l'impostazione in modo esplicito la larghezza, ma non ha avuto alcun effetto. Weirder, se vado nella console del browser e impostare le larghezze con javascript, non ha alcun effetto. Questo mi ha perplesso.
Purtroppo per me Sembra che il jqGrid "Answer Man" (Oleg) non è in giro ... lol.
Ho provato entrambi, in realtà. Ancora senza fortuna. Per ora ho ricominciato a ricreare completamente la griglia ma a passare i parametri necessari per ottenerlo nello stato di cui ho bisogno. Dolore nel culo ma funziona. – Lothar