Lot*_*har 5 javascript jquery jqgrid
我的问题:当我在jqGrid中拖动一行并完成自定义重新加载功能时,网格的单元格(以前在定义网格时设置的所有不同宽度)都会调整为大小相同的宽度.这种情况发生在Webkit浏览器中,但不发生在Firefox中.
代码: 我已拖动到网格上启用排序:
$mygrid.jqGrid(
'sortableRows', {
update: function(e, ui) {
sort_grid(e, ui);
}
}
);
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我有一个名为drag complete的排序函数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
}
})
}
}
Run Code Online (Sandbox Code Playgroud)
一旦我点击重新加载触发器$('#' + current_grid).trigger("reloadGrid");
并重新加载完成,网格现在在网格中的单元格上具有不正确的宽度(它们从各种宽度变为全部具有相同的宽度).
最初创建网格时,它具有以正常jqGrid方式定义的宽度:
colModel:[
{name:'one', index:'one', sortable:true, width:45},
{name:'two', index:'two', sortable:true, width:180},
]
Run Code Online (Sandbox Code Playgroud)
但是在网格重新加载之后,宽度被重置都是相同的宽度(我假设这是网格的总宽度均匀地划分为行中的单元格总数).那么,我是否需要再次显式设置这些宽度,可能是在网格重新加载后调用以下内容?
$('.grid').setGridParam({
colModel:[
{name:'one', index:'one', sortable:true, width:45},
{name:'two', index:'two', sortable:true, width:180},
]
});
Run Code Online (Sandbox Code Playgroud)
我尝试了上面的修复,重新加载后重新定义了colModel并明确设置了宽度,但它没有任何效果.Weirder,如果我进入浏览器控制台并使用javascript设置宽度它也没有任何效果.那让我很难过.
不幸的是,我看起来像jqGrid"答案人"(奥列格)不在...哈哈.
小智 1
您是否尝试过在 jQgrid 选项中设置此属性
width: 'auto',
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,请尝试在更新行后重新加载网格
jQuery('.grid').trigger('reloadGrid');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2376 次 |
最近记录: |