我的問題:當我在jqGrid中拖動一行並完成一個自定義重載功能時,網格的單元格先前全部變化寬度網格被定義,調整大小都是相同的寬度。這發生在Webkit瀏覽器中,但不在Firefox中。jqGrid - 拖動一行來對它進行排序,以便將單元格寬度進行排序
代碼: 我已經拖排序在網格上啓用:
$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");
和重裝完成電網現在已經在網格中的細胞寬度不正確(他們是不同寬度的全部是相同的寬度去)。
當電網在最初創建它已經以正常的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並明確設置寬度,但它沒有任何效果。 Weirder,如果我進入瀏覽器控制檯並用javascript設置寬度,它也沒有效果。這讓我很難過。
不幸的是,我看起來像jqGrid的「答人」(Oleg)不在身邊...笑。
我已經試過這兩個,其實。仍然沒有運氣。現在我已經完全重新創建了網格,但是通過了所需的參數,以便將其置於所需的狀態。在對接的痛苦,但它的作品。 – Lothar 2012-02-20 18:34:53