/ / jqgridカラムにコールバックを使用してカスタムfomatterの値を代入する - javascript、jquery、jqgrid

jqgrid列にコールバックを使用してカスタムfomatterの値を割り当てます - javascript、jquery、jqgrid

私はカスタムを使用するコードを書いています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.