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プロパティを定義するだけで問題は解決すると思います。

もう1つの代替オプションは、カスタムソートの使用です。sorttypeas functionを指定するに過ぎません。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>";
    }}

グリッドで使用する行 ID (名前idを持つ列またはプロパティkey: trueを持ち、値が一意である列) が と同じである場合は、 の代わりにArticleId使用できます。options.rowIdrowObject.refid

answerなどで、カスタム フォーマッタの詳細を読むことができます。

于 2012-12-04T10:39:30.220 に答える