0

データが事前に入力されたjqgridがあります。任意の行をクリックすると、詳細を取得するために 4 つの ajax リクエストが送信されます (4 つの jsp ページが読み込まれます)。3ページに新しいjqgridsがあります。

最初のグリッド (jsp ページ) に外部検索とクリア オプションがあります。何回でも問題なく動作します。しかし、グリッドを使用して他のページをフェッチすると、検索とクリアが機能しません。もちろん、スクリプトは実行されますが、トリガーは実行されません。

私はいくつかの解決策を見ましたが、すべてを適用しましたが、役に立ちませんでした。

グリッド 1:

<sjg:grid
    autowidth="true"
    id="assetgridtable"
    caption="List of Assets"
    dataType="json"
    href="%{remoteurl}"
    pager="true"
    navigator="false"
    navigatorSearch="false"
    navigatorAdd="false"
    navigatorEdit="false"
    navigatorDelete="false"
    navigatorView="false"
    navigatorExtraButtons="{
    seperator: { 
            title : 'seperator'  
        }
    }"
    gridModel="gridModel"
    rowList="10,15,20,30,50"
    rowNum="15"
    shrinkToFit="true"
    viewrecords="true"
    onSelectRowTopics="rowselect"
    loadonce="false">

以下は、rowselect のサブスクリプション コードです。

$.subscribe('rowselect',
  function(event, data){
    var id = event.originalEvent.id;
    $.ajax(
    {
        type : 'GET',
        url : "displayAsset.action",
        cache : false,
        data :
        {
            "id" : id
        },
        success : function(result)
        {
            $("#dataassetshow").append('<div id="assetshow"></div>');
            $("#assetshow").html(result);
            $("#assetshow").css(
            {
                "text-align" : "center",
            }).show("fast");
        }
    });

私は ajax 呼び出しの 1 つだけを表示しています。同様に、他のグリッドをフェッチする呼び出しがさらに 3 つ存在します。

これで検索コード

 $('#searchAsset').on('submit', function(event)
 {
    $("#assetgridtable").jqGrid('setGridParam',
    {
        type : 'GET',
        url : "listAsset.action",
        page : 1,
        datatype : 'json',
        cache : false,
        gridview : true,
        postData :
        {
            "search" : function()
            {
                return true;
            },
            "searchText" : function()
            {
                return $('#searchText').val();
            },
            "option" : function()
            {
                return $('input[name=option]:checked').val();
            },
            "from" : function()
            {
                return $('#from').val();
            },
            "to" : function()
            {
                return $('#to').val();
            },

        },
    }).trigger('reloadGrid');
    event.preventDefault();
});

すでに指定されているように、上記のコードは常に正常に動作しますが、他のグリッドがフェッチされるとリロードがトリガーされません!!!

4

1 に答える 1

1

trigger('reloadGrid')リロードトピックを使用しないでください。

<sjg:grid 
...
reloadTopics="reloadMyGrid"
...
/>

その後、次のようなカスタム JavaScript コードでリロードをトリガーできます。

$.publish("reloadMyGrid");

または sj:a リンクをクリックして

<sj:a ... onClickTopics="reloadMyGrid">Link</sj:a>
于 2015-06-04T12:46:34.593 に答える