0

我需要在 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>"
4

1 回答 1

3

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

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

另一种选择是使用自定义排序。只不过是指定sorttypeas function而已。答案这个提供了这种实现的例子。重要的是要了解它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.

例如,您可以在答案中阅读有关自定义格式化程序的更多信息。

于 2012-12-04T10:39:30.220 回答