Javascript jqGrid:固定行

Javascript jqGrid:固定行,javascript,jqgrid,Javascript,Jqgrid,可以在固定位置上设置行吗?例如,我们现在有一个总计行,我们总是希望在排序后,总计在顶部 有这个插件吗 我们尝试在onload中完成此操作,方法是重新绘制整个表,如下所示: var rowIDs = $(this).getDataIDs(); var rowID, columnID; $(this).clearGridData(); for (rowID in rowIDs) { for (columnID in data.rows[rowID]) { $(this).addRowD

可以在固定位置上设置行吗?例如,我们现在有一个总计行,我们总是希望在排序后,总计在顶部

有这个插件吗

我们尝试在onload中完成此操作,方法是重新绘制整个表,如下所示:

var rowIDs = $(this).getDataIDs();
var rowID, columnID;
$(this).clearGridData(); 
for (rowID in rowIDs) {
  for (columnID in data.rows[rowID]) {
    $(this).addRowData(rowIDs[rowID], data.rows[rowID], (data.rows[rowID][columnID].first ? 'first' : null));
    break; // Only do this for the first column
  }
}
但这对性能不好,我们有数千行

在奥列格的评论之后:

总行只是数据集中的一行。数据集具有以下格式:

列:“网络”、“单击”、“视图”

data = [
  {
    'Network': {value:'Google'}, 'Clicks': {value:38392882}, 'Views':{value:3939922}
  },
  {
    'Network': {value:'Sanoma'}, 'Clicks': {value:177883}, 'Views':{value:39293}
  },
  ...
  ,
  {
    'Network': {value:'Total'}, 'Clicks': {value:993832732223}, 'Views':{value:3932293939}, 'first': true
  },
  ...

]
}
因此,我们在datarow中设置希望在顶部显示的行('first':true)

通过处理,我们使用它来设置在表的顶部。希望这更容易理解:)

提前感谢,


Eddy

页脚被放置在带有“ui jqgrid sdiv”类的div中,并且它通常被放置在带有“ui jqgrid bdiv”类的div下面,主网格包含在该div中。因此,要移动页面顶部的页脚,您需要将页脚移动到页脚div。此外,您应该将底部边框放置在所需的样式中。代码可能如下所示:

$('div.ui-jqgrid-sdiv').css({
    "border-bottom-style":"solid",
    "border-bottom-color":"#a6c9e2",
    "border-bottom-width":"2px"
}).insertBefore($('div.ui-jqgrid-bdiv'));
因此,您将收到


请参见演示现场。

页脚被放置在带有类“ui jqgrid sdiv”的div中,它通常被放置在带有类“ui jqgrid bdiv”的div下面,主网格包含在该div中。因此,要移动页面顶部的页脚,您需要将页脚移动到页脚div。此外,您应该将底部边框放置在所需的样式中。代码可能如下所示:

$('div.ui-jqgrid-sdiv').css({
    "border-bottom-style":"solid",
    "border-bottom-color":"#a6c9e2",
    "border-bottom-width":"2px"
}).insertBefore($('div.ui-jqgrid-bdiv'));
因此,您将收到


查看演示现场。

我忘了提到,对网格的每一行使用
addRowData
的速度非常慢。我不明白你为什么要这么做。你可以问一个新问题,在哪里发布更多的代码,并解释你为什么需要这个。您是否从服务器接收JSON数据?为什么jqGrid不能直接填充数据?我相信人们可以找到更有效的方法来填充网格。@oleg:是的,我们注意到addRowData非常慢,这就是为什么我们需要另一种解决方案。我接受了你的建议,编辑了这个问题。谢谢。我不清楚的是数据集中的数据将如何发送给客户?在填充jqGrid之前,您会调用ajax吗?为什么将数据放在如此奇怪的形式中,比如
'Network':{value:'Google'}
,而不是
Network:'Google'
?为什么首先将
设置为true
作为数据的一部分?您是否有多个项目具有
first:true
?一般来说,您可以轻松创建jqGrid,它具有
gridview:true
,与数据结构相对应,并使用jqGrid的
data
参数。@oleg是的,我们执行ajax调用(json请求)从服务器获取数据。数据是以这种形式存在的,因此我们可以对格式化程序解析的每个datacell:Network:{'value':827387,benchmark:true,Strion:(somecondition?true:false)}执行一些操作。“datacell”说的不多,但如果您按照ajax获取数据,您可以定义参数,该参数将允许jqGrid以服务器提供的形式读取JSON数据。因此,您可以直接在jqGrid中使用
datatype:'json'
,并定义提供数据的服务器
url
。您还可以使用jqGrid的'gridview:true'参数,这将进一步加快网格的填充速度。因此,数据将立即填充到网格中,所有这些都将快速工作。我忘了提到,对网格的每一行使用
addRowData
是一种非常缓慢的方法。我不明白你为什么要这么做。你可以问一个新问题,在哪里发布更多的代码,并解释你为什么需要这个。您是否从服务器接收JSON数据?为什么jqGrid不能直接填充数据?我相信人们可以找到更有效的方法来填充网格。@oleg:是的,我们注意到addRowData非常慢,这就是为什么我们需要另一种解决方案。我接受了你的建议,编辑了这个问题。谢谢。我不清楚的是数据集中的数据将如何发送给客户?在填充jqGrid之前,您会调用ajax吗?为什么将数据放在如此奇怪的形式中,比如
'Network':{value:'Google'}
,而不是
Network:'Google'
?为什么首先将
设置为true
作为数据的一部分?您是否有多个项目具有
first:true
?一般来说,您可以轻松创建jqGrid,它具有
gridview:true
,与数据结构相对应,并使用jqGrid的
data
参数。@oleg是的,我们执行ajax调用(json请求)从服务器获取数据。数据是以这种形式存在的,因此我们可以对格式化程序解析的每个datacell:Network:{'value':827387,benchmark:true,Strion:(somecondition?true:false)}执行一些操作。“datacell”说的不多,但如果您按照ajax获取数据,您可以定义参数,该参数将允许jqGrid以服务器提供的形式读取JSON数据。因此,您可以直接在jqGrid中使用
datatype:'json'
,并定义提供数据的服务器
url
。您还可以使用jqGrid的'gridview:true'参数,这将进一步加快网格的填充速度。因此,数据将立即填充到网格中,所有这些都将快速工作。很好的选项。我们将数据作为对象,total只是数据集的一行,它必须经过许多格式化程序,所以我不确定是否可以做同样的事情,但我会尝试。谢谢你的选择。@eddy147:不客气!正如我之前所写的,我在代码中看到了许多优化潜力。您只需要更准确地解释为什么需要在循环中添加带有
addRowData
的行。如果服务器上有数据集,您可以在服务器的JSON响应中填写
userdata
,并在jqGrid中使用
userDataOnFooter:true
,这将把
userdata
中的数据放在grid.nice选项中。我们有obj的数据