1

jqGridインライン編集が処理可能なイベントをスローするかどうか誰かが知っていますか?次のコードは、私が達成しようとしていることの簡単な例です。

jQuery('#list').jqGrid('editRow', 0, true, false, false, false, {onClose: function(){alert('onClose')}}, reloadGrid);

「Esc」キャンセルイベントを処理できるようにしたいと思います。onCloseイベントはフォーム編集で利用できます:

jqGridのドキュメントのそれぞれのセクションを参照してください。

extraparamただし、インライン編集では機能せず、インライン編集のドキュメントでは、非常に具体的でないオプション以外のイベントに関する情報は提供されていません。

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing

extraparamオプションの使い方がわかりません。提案?

4

2 に答える 2

2

あなたのリンクによると:

extraparam: タイプ name: value の配列。これらの値を設定すると、他の値とともにサーバーに送信されます。

したがって、これはカスタム データを POST 経由でサーバーに戻すことのみを許可します。イベント ハンドラを追加することはできません。

jqGrid のソース コードにeditRowは、次の Escape キーのハンドラーが含まれています。

if (e.keyCode === 27) {$($t).jqGrid("restoreRow",rowid, afterrestorefunc);}

というわけでイベント発生。ドキュメントによると:

afterrestorefunc 定義されている場合、この関数は行が復元された後に呼び出されます。この関数に行 ID を渡します

そのため、エスケープ キーを押すと がトリガーされますが、エスケープ キーに対する明示的な関数コールバックはありませんafterrestorefunc。残念ながら、このイベントは、行が Enter キーで保存されたときにも呼び出されます。

if (e.keyCode === 13) {
    var ta = e.target;
    if(ta.tagName == 'TEXTAREA') return true;
    $($t).jqGrid("saveRow",rowid,succesfunc, url, extraparam, aftersavefunc,errorfunc, afterrestorefunc );
    return false;
}

afterrestorefuncしかし、注意すれば、ニーズに合わせて使用​​できる場合があります。

于 2010-04-27T13:23:11.290 に答える
0

ちょっとジャスティン、迅速な対応と助けに感謝します.

コールバックは私の問い合わせに対する約束を示していafterrestorefuncますが、この時点で私が探しているものはまだ正確ではありません. 私が見る限り、これが有益である唯一の理由は、restoreRowメソッドを呼び出していた場合です。しかし、私が直面している問題はeditRow、「Esc」キーを使用して閉じられていることであり、イベントを処理できる必要があります。ただし、あなたの応答により、コールバックについて考えさせeditRowられ、afterrestorefuncコールバックの定義もあります。

jQuery("#grid_id").jqGrid('editRow',rowid, keys, oneditfunc, succesfunc, url, extraparam, aftersavefunc,errorfunc, afterrestorefunc);

これはまさに私が必要としているものであり、完全に機能しているようです。あなたの答えは私の質問に 100% 適合するものではありませんでしたが、間違いなく正しい方向を示してくれました。助けてくれてありがとう。

于 2010-04-27T18:21:10.463 に答える