Xpage でカスタム コントロールを使用して、jqGrid でテーブルを作成しています。jqGrid は JSON 経由でデータを受け取り、テーブルを正しく埋めます。
私の質問は、jqGrid のソート機能に関するものです。テーブルを最初に作成するときに、「docname」列のセル値にカスタム フォーマッタを適用します。私が抱えている問題は、列のいずれかをソートした後、このフォーマッターが使用できなくなることです。フォーマットは引き続き適用されますが、この特定のフォーマッタは、別の Xpage を起動し、パラメータ「docid」に依存する URL を作成します。
これが私のカスタムフォーマッタです:
function openDocument(cellvalue, options, rowObject) {
return "<a target='#{javascript:compositeData.target}' title='Open Document'
href='https://test.url.com?DocID=" +rowObject["docid"]+
"&action=#{javascript:compositeData.action}' class='doclink'>"
+ cellvalue + "</a>"; }
グリッドを並べ替えた後、rowObject "docid" を openDocument フォーマッタに戻す方法はありますか?
私はいくつかを調査し、onSortCol イベントを見つけて、次のように初期化しました。
onSortCol: function(index,iCol,sortorder) {alert("Test")}
onSortCol の初期化にある私のアラートは機能しています。現在、並べ替え後に未定義に設定されているため、並べ替えの実行後に「docid」パラメーターを設定する方法を見つける必要があります。
私は入れてみました:
{rowObject["docid"]}
しかし、これは並べ替えをすべて一緒に壊すだけです。
私はこれらの投稿も読みました:
JQGrid ソート - onSortCol イベントをトリガーする方法
jqGrid - init 後に onSortCol を設定することは可能ですか?
ご協力いただきありがとうございます。
編集:
jqGrid 定義:
$().ready(function(){
jQuery("#listxGrid").jqGrid({
url:'#{javascript:compositeData.url}',
datatype: "json",
colNames:#{javascript:compositeData.colNames},
colModel:#{javascript:compositeData.colModel},
shrinkToFit: false,
jsonReader: {
repeatitems: false,
id: '#{javascript:compositeData.colID}',
root: function (obj) {
if ($.isArray(obj)) return obj;
if ($.isArray(obj.items)) return obj.items;
return [];
},
page: function () { return 1; },
total: function () { return 1; },
records: function (obj) {
if ($.isArray(obj)) return obj.length;
if ($.isArray(obj.items)) return obj.items.length;
return 0;
}
},
gridview: true,
loadonce: true,
ignoreCase: #{javascript:compositeData.ignoreCase},
rowNum: #{javascript:compositeData.rowNum},
rowList: #{javascript:compositeData.rowList},
rownumbers: #{javascript:compositeData.showRowNumbers},
height: #{javascript:compositeData.height},
caption: '#{javascript:compositeData.caption}',
pager: '#pagerxGrid',
viewrecords: true,
emptyrecords: '#{javascript:compositeData.emptyRecords}',
sortable: true,
onSortCol: function(index,iCol,sortorder) {alert(index)},
grouping: #{javascript:compositeData.grouping},
groupingView : {
groupField : #{javascript:compositeData.groupField},
groupDataSorted : true,
groupColumnShow : #{javascript:compositeData.showGroupCol}
}
});