jqGrid排序列忽略html标记

时间:2012-12-04 09:40:10

标签: jquery jqgrid

我需要在jqGrid中实现自定义排序,在列中我们有html标记,它会进行正确的排序,例如:

<a href="/Templates/Article.aspx?id=12884945915" class="link" title="Article  123">Article </a>

现在有一种方法可以设置jqGrid来对此列进行排序,忽略html标记。

更新 这是此列的colmodel

{"sortable":true,"name":"Title","index":"Title","hidden":false,"sorttype":null,"formatter":null,"formatoptions":null,"datefmt":null,"typeName":null},

这是专栏的一个例子:

"Title":"<a href='/Templates/Article.aspx?id=4294967489' class='link' title='Sensor'>Sensor</a>"

1 个答案:

答案 0 :(得分:3)

如果您构建包含预定义formatter: "showlink"列或关于自定义格式化程序的列,我认为您将不会遇到所描述的问题。如果使用custom formatter,您应该忘记定义unformat函数,该函数从列的单元格中获取文本。

如果您只为列定义unformat属性,我认为您的问题将会得到解决。

另一个选择是使用自定义排序。它只不过是将sorttype指定为功能The answerthis one提供了此类实施的示例。了解sorttype仅在本地排序时才会使用,这一点非常重要。如果使用服务器端排序,则应在服务器端代码中搜索所述问题的来源。

更新:不建议在数据中使用HTML片段。在您将数据与标记混合的方式中,这使得排序更加困难。而不是你可以替代输入数据

"Title":"<a href='/Templates/Article.aspx?id=4294967489' class='link' title='Sensor'>Sensor</a>"

"ArticleId":4294967489, "Title":"Sensor"

您可以根据自定义格式化程序构建单元格内的<a>元素。在这种情况下,您可以使用列定义,如

{name: "Title", width: 100,
    formatter: function (cellvalue, options, rowObject) {
        return "<a href='/Templates/Article.aspx?id=" + rowObject.refid +
            "' class='link' title='" + $.jgrid.stripHtml(cellvalue) + "'>" +
            $.jgrid.htmlEncode(cellvalue) + "</a>";
    }}

如果您在网格中使用的rowid(名称为id的列或具有属性key: true的列以及哪些值是唯一的)与ArticleId相同,那么您可以使用options.rowId代替rowObject.refid

您可以在the answer中了解有关自定义格式化程序的详情。