jqGrid colModel持久存储到服务器但触发reloadGrid无法将数据放入右列

时间:2014-09-08 19:44:04

标签: javascript jquery json jqgrid dataset

简而言之问题

随着每个列的调整,我将新列模型保存到服务器,为该用户,并立即开始改变JSON以与该用户的ajax请求的新列顺序一致。在这种情况下,我还需要remapColumns函数还是permuatation变量?

我的初始jQGrid(4.4.5)使用数据类型加载:' json',loadonce:true(fwiw)

服务器明确地写出javascript变量,以正确的方式初始化网格的colNames和colModel,以所需的顺序,宽度和所需的隐藏状态' - 对用户而言是独一无二的。上次保存的设置(如果有)。例如:

var MainTableColumnNames = ['Work Order','DatePickedUp','Generator','Order Status'];
var MainTableColumnModel = [
{name: 'Work Order', index: 'Work Order', editable:false, align: 'left', hidden:false, width:82 },
{name: 'DatePickedUp', index: 'DatePickedUp', editable:false, align: 'left', hidden:false, formatter:'date', width:120 },
{name: 'Generator', index: 'Generator', editable:false, align: 'left', hidden:false, width:264 }, width:293 },
{name: 'Order Status', index: 'Order Status', editable:false, align: 'left', hidden:false, width:50 }
        ];

我有自己的方法将col模型数据保存到服务器,并且我没有使用我最近遇到过的任何概念(似乎Oleg已经解决了很多这个问题)。 FWIW:我只保存宽度,大小,隐藏(并隐含列布局顺序)。因此,上面的一些col模型是从用户设置提供的,而其他部分是从默认值或通过反映.NET System.Data.DataColumn

的属性派生的。

此外,resizeStop事件和扩展列选择器都指向一个公共脚本函数,该函数会持续更改列布局。因此,下次用户加载网页时,将根据为该用户保存的新设置来布置所有内容。这一切都很好。

但是..甚至在他们重新加载网页之前,对服务器的任何新请求现在都会以新的列顺序将json数据发送回用户。而且,我不确定会出现什么问题。我已经看到其他人在StackOverflow上引用的列排序问题没有发生在我身上..你可以点击一个列标题并将数据重新排序到位(我认为这是因为我使用了loadonce,所以它使用现有的localdata进行排序)。

但是,如果我点击树控件中的节点(我有自己的树实现,将各种数据片段加载到主网格中),返回的新JSON数据无法成功加载到jqGrid中 - 几列看起来转换 -

现在,如果我进行整页刷新,一切都很好。

当我点击我的一个树节点时,如何将新数据导入网格的示例:

$('#myCustomTreeNode').bind('tree.click', function(event){
   var node = event.node;

   var newUrl = '/api/DataView/MainGrid/' + node.id;

   $grid.jqGrid('setGridParam',{url : newUrl, datatype: 'json', postData: { 'guid':someVariable} }).trigger('reloadGrid');
});

更新:所以这是我的问题:

所以,我的主要问题是:在更新jqGrid列模型之后(不仅是jqGrid的客户端模型,而且当连续的服务器提供的数据将立即符合新的列顺序时)..我想知道正确的方法继续使用当前实例化的jqGrid实例w / o整页重绘。我必须做一个完整的GridUnload或GridDestroy吗?我希望有人可以指点我的.trigger' reloadGrid'上面说明的电话。

更多细节 正如我在开头段落中所述,每个用户都有自己的" MainTableColumnModel"写入浏览器会话的变量..字面意思是页面绘制,物理列顺序按其上次保存的列排列的顺序写入。

而且,我认为这是我可能犯错误的地方。

在其他示例like this one by Oleg中,似乎所有用户都应该获得相同的初始列模型,并且如果他们已将特定模型保存到其用户设置中,那么我应该将其作为排列加载用于在页面初始加载时处理的remapColumns的变量,而不是根据每个用户转换所有JSON数据请求。单个列模型设置。

由于我的替代方法几乎正常工作,我仍然希望我能做到这一点。

0 个答案:

没有答案