Javascript JqGrid保留网格参数并检索它-无法设置它
我有一个jqGrid,我试图让用户选择保存自己的视图。这些视图与所有参数一起存储在数据库中。我有大约30列,因此不可能在一个页面中容纳整个网格,因此我提供了移动行、调整宽度等选项,然后能够保存参数 为此,我有这个代码来保存数据库中的整个网格Javascript JqGrid保留网格参数并检索它-无法设置它,javascript,jquery,json,jqgrid,Javascript,Jquery,Json,Jqgrid,我有一个jqGrid,我试图让用户选择保存自己的视图。这些视图与所有参数一起存储在数据库中。我有大约30列,因此不可能在一个页面中容纳整个网格,因此我提供了移动行、调整宽度等选项,然后能够保存参数 为此,我有这个代码来保存数据库中的整个网格 var saveLayoutDialog = "<div title='Save Layout'>"+ "<label style='width: 100%; !important;'>Name the layout&
var saveLayoutDialog =
"<div title='Save Layout'>"+
"<label style='width: 100%; !important;'>Name the layout</label></br>" +
"<input type='text' name='nameOfLayout' id='nameOfLayout' placeholder='Name of Layout' style='width: 100%; !important;'>" +
"</div>";
$(saveLayoutDialog).dialog({
modal: true,
buttons: {
'OK': function () {
$.ajax({
type: 'POST',
url: Routing.generate('save_grid_parameters_homepage', { gridName: 'PODetail' }) ,
data: {
'layoutName': $("#nameOfLayout").val(),
'gridData': JSON.stringify($("#list").getGridParam())
},
success: function(data){
if(data.success == 'success')
{
}
else if(data.success == 'fail')
{
}
}
});
$(this).dialog('close');
},
'CANCEL': function () {
$(this).dialog('close');
}
}
});
var saveLayoutDialog=
""+
“命名布局”+
"" +
"";
$(saveLayoutDialog).对话框({
莫代尔:是的,
按钮:{
“确定”:函数(){
$.ajax({
键入:“POST”,
url:Routing.generate('save_grid_parameters_homepage',{gridName:'PODetail'}),
数据:{
'布局名称':$(“#布局名称”).val(),
'gridData':JSON.stringify($(“#列表”).getGridParam()
},
成功:功能(数据){
如果(data.success==“success”)
{
}
else if(data.success==“fail”)
{
}
}
});
$(this.dialog('close');
},
“取消”:函数(){
$(this.dialog('close');
}
}
});
这是工作良好,我能够保存在数据库的数据
在网格上我有一个按钮来改变布局的设计。因此,当用户单击按钮时,将显示可用的布局(以前保存在dB中),用户可以选择一个布局,网格的设计将相应地更改
这是按钮的代码:
.navButtonAdd("#pager",{
id: "changeDesign",
caption:"Change Design",
onClickButton: function(){
var htmlForPopup = "<div id='changeDesign' title='Change Design'>"+
"<label style='width: 100%; !important;'>SELECT A DESIGN</label>" +
"<div class='radio'>";
$.ajax({
url: Routing.generate('get_grid_layouts_homepage', { gridName: 'PODetail' }),
success: function(data){
$.each (data, function (bb) {
htmlForPopup +=
"<input type='radio' name='gridLayouts' id='"+data[bb].layoutName+"' value='"+data[bb].gridData+"' style='width: 20%; !important;'>"+data[bb].layoutName+"</br>";
});
htmlForPopup += "</div></div>";
$(htmlForPopup).dialog({
modal: true,
buttons: {
'OK': function() {
//console.log(JSON.parse($('input[name=gridLayouts]:checked').val()));
$("#list").setGridParam(JSON.parse($('input[name=gridLayouts]:checked').val())).trigger("reloadGrid");
$(this).dialog('close');
}
}
});
}
});
}
});
.navbuttonad(#寻呼机){
id:“变更设计”,
标题:“改变设计”,
onClickButton:function(){
var htmlForPopup=“”+
“选择设计”+
"";
$.ajax({
url:Routing.generate('get\u grid\u layouts\u homepage',{gridName:'PODetail'}),
成功:功能(数据){
$。每个(数据、功能(bb){
HTMLFORPOUP+=
“+data[bb].布局名称+””;
});
htmlForPopup+=“”;
$(htmlForPopup).对话框({
莫代尔:是的,
按钮:{
“确定”:函数(){
//log(JSON.parse($('input[name=gridLayouts]:checked').val());
$(“#list”).setGridParam(JSON.parse($('input[name=gridLayouts]:checked').val()).trigger(“reloadGrid”);
$(this.dialog('close');
}
}
});
}
});
}
});
问题:所需设备工作不正常。行没有移动,列数据也没有正确显示
示例:
这是默认情况下加载的理想网格。
这是单击上面显示的按钮代码时显示的弹出窗口。
单击其中一个选项,理想情况下,折扣
列和成本
列也应使用各自的数据切换其头寸。但这并没有发生,而是发生了:
折扣和成本列的数据正在切换,但标题本身没有切换。同样在成本
下(理想情况下应该有折扣
列的数据转换为NaN
(我假设这是因为数据类型不匹配)
我做错了什么
编辑1:jqGrid版本4.8.2,如果需要完整的jqGrid,请告诉我,我将用代码更新问题
编辑2:工作使用一个参数调用
setGridParam
:从$('input[name=gridLayouts]:checked')获得的值。val()
。然后调用reloadGrid
,只重新加载数据,而不重新加载jqGrid的许多其他选项。要在网格外部进行一些更改,必须使用相应的jqGrid方法。例如,您必须使用remapColumns
或更好的remapColumnsByName
来切换columns(例如“折扣”和“成本”列)。同样,您需要使用showCol
/hideCol
方法来显示/隐藏网格的一列,以此类推。jqGrid参数的某些更改需要重新创建网格
我建议您尝试我为其创建的网格。演示显示了如何在web浏览器的localStorage
中保存网格状态。尝试在演示中对列重新排序,隐藏一些列,更改排序顺序,选择一行,然后使用F5重新加载页面(重新打开同一页面)。这不完全是您所做的,但大多数技术问题都是相同的。我希望这将有助于您实现您的要求
另外,再次感谢您在中的错误报告。我已发布到GitHub。对不起,如果您对jqGrid有问题,那么您应该包括创建它的JavaScript代码以及用于填充网格的测试数据。与jqGrid相关的唯一代码行是
$(“#list”).setGridParam(JSON.parse($('input[name=gridLayouts]:checked').val()).trigger(“reloadGrid”);
,但这是错误的。您可以使用一个参数调用setGridParam
:$(“#list”).setGridParam(oneParam)
不要使用两个参数:参数名和参数值。最有效的方法是准备演示问题的演示。@Oleg抱歉,我将用一把小提琴更新问题。您可能可以查看,或者。答案显示了如何重新加载网格(在重新加载页面的示例中)使用先前保存的网格状态(选定行、页码