0

У меня есть jqgrid, предварительно заполненный данными. Нажав на любую строку, вы отправите 4 запроса ajax для получения сведений (загрузится 4 страницы jsp). На 3 страницах есть новые jqgrids.jqgrid .trigger ('reloadGrid'); не работает с несколькими сетками

У меня есть внешний поиск и возможность очистки на первой сетке (страница 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"); 
     } 
    }); 

Я показываю только один из Аякса вызовов, также более 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(); 
}); 

Как уже указывалось, выше код прекрасно работает все время, но когда другие сетки выбираются, он не инициирует перезагрузку !!!

ответ

1

Не используйте trigger('reloadGrid') лучше использовать темы перезагрузки.

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

После этого вы можете вызвать перезагрузку в персонализированном коде JavaScript, подобный код:

$.publish("reloadMyGrid"); 

или щелчок на Sj: ссылка как этого

<sj:a ... onClickTopics="reloadMyGrid">Link</sj:a> 
+0

Собирается попробовать это. Дадут вам знать ... –

+0

Нет, проблема остается ... –

+0

И как вы попробовали? – Johannes

Смежные вопросы