私はカスタムを使用するコードを書いていますjqgrid列のフォーマッターフォーマッタはcallabckを使用しています。この関数の値をフォーマッタに代入しようとすると、私は未定義の値を取得していますが、警告を出すときは正しい値を得ています。ここに私のコードです。どんな助けもありがとう。
var str="";
function myFormatter(cellvalue, options, rowObject, callback) {
var loadUrl= "someUrl";
$.getJSON(loadUrl, function(jsnResponse) {
if (typeof (callback) === "function") {
alert("within callback " + jsnResponse.logo);
str= "<img width="20" src="/images/ + jsnResponse.logo + " />";
callback(str);
}
});
}
この関数を呼び出してjqgridフォーマッタに代入するには、次のコードを使用しています
formatter : function(cellvalue, options, rowObject){
return myFormatter
(cellvalue, options, rowObject, function(str) {
alert("in formatter "+str);
});
ありがとう
回答:
回答№1は0私は、カスタムフォーマッタとは何かを誤解していて、それがどのように使われるかと思います。カスタムフォーマッタはすでにコールバック関数です。この関数を使用する場合は、定義する必要があります。 jqGridがコールバックを呼び出す プロパティ formatter
いくつかの列に対して定義されており、その値は関数です。 jqGridは呼び出しを行うため、jqGridは使用するパラメータを指定します。
反対側では、第2パラメータ(options
パラメータ)には、あなたに役立ついくつかのプロパティが含まれています。例えば colModel
プロパティ(options.colModel
)は、 colModel
カスタムフォーマッタが使用される場所。次のコードは、私が意味することを示しています
function myFormatter(cellvalue, options, rowObject) {
var myOption1 = options.colModel.formatoptions.myOption1;
...
}
...
colModel: [
{ name: "col1", formatoptions: { myOption1: "abc" }, formatter: myFormatter },
{ name: "col2", formatoptions: { myOption1: "xyz" }, formatter: myFormatter },
...
]
上記のように、同じ機能 myFormatter
異なるものと呼ばれる myOption1
オプション("abc"
または "xyz"
)を使用しています。定義することができます どれか オプションのセット いかなるタイプ (包括的なコールバック関数)。必要な場合は、カスタムフォーマッタ内部のROWIDにアクセスできます。 options.rowId
.