2017-08-20 13 views
1

私はjqGridにinfo_dialogを使用しようとしますが、コンソールにはTypeError: $(...).jqGrid.info_dialog is not a functionがあります。jqGrid.info_dialogは関数ではありません。拡張を呼び出す必要はありますか?

私は自分のinfo_dialog機能を(!)定義していません。しかし、私は$.extend($.jgrid, ...のようなものがhereのように見えるので、デフォルトで利用可能であると予想していました。

info_dialog : function(caption, content,c_b, modalopt) { 
     var mopt = { 
      width:290, 
      height:'auto', 

グリッドとして有効にする必要はありますか?それとも他に何今使用して、私はバージョンがhttps://cdnjs.com/libraries/jqgrid
から4.6.0を使用してhere(私のグリッド上extendを呼ぶ?...)

を定義し使用することができ、そうしなければならないのhttps://cdnjs.com/libraries/free-jqgrid 4.14.1

+0

商用[Guriddo jqGrid JS](http://www.jqGrid.com)のjqGrid([free jqGrid](https://github.com/free-jqgrid/jqGrid) /guriddo.net/?page_id=103334)またはバージョン<= 4.7の古いjqGrid)。さらに、**あなたのコードで 'info_dialog'をどのように呼び出すかを見ることが重要です**。使用しているjqGridのバージョンによって、 '$ .jgrid.info_dialog.call($("#grid ")[0]、...)'のように 'this'を正しく初期化することができます。 – Oleg

答えて

1

jqGridは、標準のメソッドだけでなく、$("#grid").jqGrid("methodName", ...)または$("#grid").methodName(...)としても使用できますが、他のメソッドも使用できます。 「標準」メソッドは$.fn.jqGrid.methodName(たとえば、$.fn.jqGrid.editGridRowのような関数)に登録され、$.jgrid.no_legacy_api = true;$.jgrid.no_legacy_api = true;より前に指定されていない場合は$.fn.methodNameの下にも登録されます。

つまり、グローバルオブジェクト$.fn.jqGridまたは$.fnのみが存在し、「標準」jqGridメソッドが含まれています。

または$.fnではなく、$.jgridで他の方法のリストが登録されます。 info_dialogはそのようなメソッドの例です。したがって、そのような方法を使用するには、$.jgrid.info_dialog,$.jgrid.jqID$.jgrid.htmlEncode$.jgrid.randIdなどを使用する必要があります。ほとんどの方法では($.jgrid.randId()$.jgrid.jqID("some.text")など)を初期化する必要はありませんが、グリッドのDOMにはthisが初期化されている必要があります(空の<table>がグリッドの生成に使用されます)。

たとえば、あなたは

$grid.jqGrid("navButtonAdd", "#pager", { 
    caption: "Test", 
    onClickButton: function() { 
     $.jgrid.info_dialog.call(this, 
      "Warning with two buttons", 
      "Click the `test` button", 
      "Close", 
      { 
       buttons: [ 
        { 
         text: "\"text\" button", 
         id: "buttid", 
         onClick: function() { 
          alert("click..."); 
         } 
        } 
       ] 
      } 
     ); 
    } 
}); 

https://jsfiddle.net/OlegKi/xLrbdspo/を参照してください使用することができます。私はデモでfree jqGridフォークを使っていますが、これはjqGridのレトロなバージョン4.6と同じものを使っています。

最後の発言。 TypeScriptの構文を知っていれば、info_dialogのような多くの質問に対して、free-jqgrid.d.tsの回答が見つかります。 $.jgridの方法および特性は、hereinfo_dialogを含む)と記載されている。 hereさらに、$.jgridのようにjqGridの一部である$.fmatter$.jqm$.jqDnR$.unformatがあります。

関連する問題