1

jqGrid を使用していますが、サーバー側のテクノロジが原因で、URL を直接呼び出してデータを取得することができず、サードパーティのブローカーを介してのみサーバーに投稿できます。私の目標は、サーバーを呼び出して JSON 文字列を返す独自の JavaScript 関数を呼び出して、グリッドにデータをロードできるようにすることです。

私が試したこと:代わりに

url:'http://127.0.0.1/products/index.php’,
datatype: 'json',

私は持っている

datastring:init(),
datatype: 'jsonstring',

私のinit()関数はサーバー側の呼び出しを行います。最初のページ読み込みでは問題なく動作します。ただし、ページ間をジャンプしたり、表示する行数を変更したりする場合など、再度呼び出されることはありません。データベースからデータを更新する init 関数を呼び出す必要があります。init()ただし、関数を複数回呼び出すことはありません。これは決して変更されないハードコードされた文字列であると考えていると思います。

手動で呼び出してみまし$("#mygrid").trigger("reloadGrid");たが、うまくいかないようです。

私のグリッドは次のとおりです。

<script type="text/javascript">
$(function(){
  $("#list").jqGrid({
    datastr:init(),
    datatype: 'jsonstring',
    mtype: 'GET',
    beforeRequest: beforeReq,
    pager: '#pager',
    rowNum:5,
    rowList:[5,10,30],
    sortname: 'invid',
    sortorder: 'desc',
    grouping:true,
    viewrecords: true,
    gridview: true,

  });
});
</script>

電話してみた

$("#list").setGridParam({datatype:'jsonstring', page:1}).trigger('reloadGrid');

Oleg がここここで提案したことを試してみまし たが、まだ init 関数を再度呼び出していないようです。

4

1 に答える 1

1

現在のコードは、グリッドを作成する前にinit() 1 回呼び出します。 次に、 から返された結果を使用してグリッドを作成します。init()

本当に使用する必要がある場合datatype: 'jsonstring'(datatype: "local"追加のパラメーターを使用しない場合)を呼び出す前に、パラメーターdataの値をリセットできます。対応するコードは次のようになります。datastrreloadGrid

$("#list").setGridParam({
    datatype: "jsonstring",
    datastr: init()
}).trigger("reloadGrid", [{page: 1}]);
于 2013-06-23T17:39:39.943 に答える