Javascript 如何在JQGrid中按行排序?

Javascript 如何在JQGrid中按行排序?,javascript,jquery,sorting,jqgrid,Javascript,Jquery,Sorting,Jqgrid,默认情况下,支持按列排序。用户可以通过单击列标题对网格进行排序。也可以通过再次单击同一列标题来切换排序方向。这一点可以从中看出 我需要将“按行排序”添加到我的网格中。理想情况下,这将以完全相同的方式工作-用户可以单击行标题以按该行中的数据进行排序,然后再次单击以切换排序方向 我试图用一个例子来说明排序 按列“Col-1”排序: Col-1^ Col-2 Col-3 Row-1 A B C Row-2 B C A Row-3 C A

默认情况下,支持按列排序。用户可以通过单击列标题对网格进行排序。也可以通过再次单击同一列标题来切换排序方向。这一点可以从中看出

我需要将“按行排序”添加到我的网格中。理想情况下,这将以完全相同的方式工作-用户可以单击行标题以按该行中的数据进行排序,然后再次单击以切换排序方向

我试图用一个例子来说明排序

按列“Col-1”排序:

Col-1^ Col-2 Col-3 Row-1 A B C Row-2 B C A Row-3 C A B 第1列、第2列、第3列 第1排A B C 第2排B C A 第3排C A B 按行“第2行”排序:

Col-3 Col-1 Col-2 Row-1 C A B Row-2^ A B C Row-3 B C A 第3列第1列第2列 第1行C和B 第2行^A B C 第3排B C A
如何将其添加到我的JQGrid中?

在我看来,您可以通过使用回调来完全实现您的需求,回调在我们单击网格中的单元格时触发,并且使用方法更改列的顺序。要获取行数据,可以使用
getRowData
方法


更新:我建议您另外看一看显示如何在网格中使用垂直标题的内容。我在有复选框的专栏的例子中解释了这一点,但它在任何内容中的工作方式都完全相同。

对不起,没有一个例子就很难理解这些要求。您写道希望通过单击“行标题”对网格进行排序。“行标题”是什么?你为什么需要这么奇怪的行为?理论上讲,你必须给每一行标题绑定一个click函数。它是每行的第一个td。现在,您必须在按名称(asc或desc)对柱模型排序后重新创建网格。@Oleg-我添加了一个example@UmairP-这是一种选择,但我希望找到一种比在JQGrid之外做所有工作更简单的方法对不起,尼克,但是你发布的示例毫无价值。如果你只写A,B,C和“Col-1”,“Col-1”和“Row-1”,“Row-2”,你的要求就没有意义了。您应该反转矩阵,使用列而不是行。一个真实的例子是一些实际的用例,其中可以看到行作为行而不是列使用的优点。请参阅一个真实的示例,该示例描述了可变列数的需求。那么,您能否更接近实际地描述您的示例,而不需要进行不必要的抽象?这听起来是一个可行的解决方案,我将尝试一下,然后返回结果。感谢您的快速回复@UmairP-我想这大概是您建议的,但是重新映射列听起来比重新创建整个列要好grid@nick:不客气!让我知道你的结果。顺便说一下,我的一位来自圣地亚哥的好朋友也做了基因组分析。:-)getRowData按列id返回行值,如何使用列id获取当前列索引?remapColumns方法需要的是索引而不是ID。@尼克:如果使用良好的名称转换,问题将不存在。在常见情况下,可以使用
getGridParam
获取
colModel
参数,并查看数组的所有元素。
remapColumns
属性所需的
colModel
元素的索引将由
getRowData
使用。或者,您也可以获得
var-gridDom=$(“#grid”)[0]的DOM
。使用
var row=gridDom.rows.namedItem(rowid)
您获得该行的DOM,
row.cells[iCol]
通过列索引为您提供
var-cellText=$(row.cells[iCol]).text()。因此,您可以在不使用
getRowData
的情况下获取单元格内容。