【问题标题】:Struts 2 jQuery Grid reload issueStruts 2 jQuery Grid 重新加载问题
【发布时间】:2014-08-24 04:02:25
【问题描述】:

我的页面中有关注 jqGrid

<sjg:grid           id="reportGrid" 
             gridModel="gridModel" 
             autowidth="true" 
          reloadTopics="refreshGrid" gridview="true"  
  onGridCompleteTopics="gridLoadComplete"           
       onSuccessTopics="dataLoadCompleted"   
             navigator="true" 
                 pager="true" 
       navigatorSearch="true" 
navigatorSearchOptions="{multipleSearch:true}" 
                scroll="true" 
                rowNum="10000" 
             hoverrows="false" 
       groupColumnShow="false" 
            groupField="['field1','field2']" 
                  href="webReport" 
               formIds="myform" 
              dataType="json" 
              loadonce="true" >
    ..........................
    ..........................
    ..........................
</sjg:grid>

还有一个按钮

<sj:a button="true" 
  buttonIcon="ui-icon-refresh" 
  buttonText="true"  
     onclick="reloadGridFunc();">
    Submit
</sj:a>

在 JS 中我有这个

function reloadGridFunc()
{
    
    $("#reportGrid").jqGrid('setGridParam',{datatype:'json'});      
    $.publish("refreshGrid");
    
    // $("#reportGrid")
    //  .jqGrid('setGridParam',{url:"userReport",datatype:"json"}).
    trigger("reloadGrid");
        
}

$.subscribe('gridLoadComplete', function(event, data) {
    // $("#reportGrid").jqGrid('clearGridData');    
    // $('#reportGrid').setGridParam({ page: 1, datatype: "json"})
    //    .trigger('reloadGrid');   
    // $("#reportGrid").trigger('reloadGrid');          
});
  
$.subscribe('dataLoadCompleted', function(event, data) { 
    // $("#reportGrid").trigger('reloadGrid');
});

但我看到的是网格填充了新数据,但未清除分组;我必须按下网格底部的重新加载按钮来刷新网格,然后数据表示看起来很好。

我有一个表格,其中存在网格、锚点和其他 HTML 元素,根据这些我选择不同的条件并单击按钮,填充网格,当我更改条件时网格重新填充,但旧分组被保留。我必须按下网格中的重新加载按钮来解决这个问题。

【问题讨论】:

  • 为什么你的函数体都被注释掉了?
  • 因为我试过这些但没有用
  • @AndreaLigios 知道这里可能出了什么问题

标签: jquery struts2 jqgrid struts2-jquery struts2-jquery-grid


【解决方案1】:

当网格完成后,它会检查onGridCompleteTopics 的订阅者。

在所有数据之后发布的以逗号分隔的主题列表 加载到网格中,其他所有过程都完成了。


当网格成功时,它会检查onSuccessTopics 的订阅者。

元素 ajax 请求成功完成时发布的以逗号分隔的主题列表(如果提供,将覆盖目标容器的设置)。


如果没有找到主题事件的订阅者,他们将不会绑定到网格。因此,请确保您在检查主题订阅者之前订阅了网格。

查看带有主题的网格的example

重新加载网格的代码

</sjg:grid>
<script type="text/javascript">
  $(document).ready(function(){
    $("#reportGrid").trigger("reloadGrid");
  });
</script> 

【讨论】:

  • onGridCompleteTopics 被调用但 onSuccessTopics 未被调用,我对其进行了调试并注意到由于异步调用 $("#reportGrid").trigger('reloadGrid') 如果我创建一个其他按钮,然后调用 reloadgrig 触发器,然后网格重新加载罚款
  • 你在做其他事情而不是$("#reportGrid").trigger('reloadGrid')
  • 实际上在这之后 $.publish("refreshGrid"); gid 数据被重新加载,但组不是,即组旧文本保持不变,当我按下重新加载按钮时,它会被刷新,这就是我调用重新加载触发器的原因
  • 那么,为什么不在主题处理程序中调用它呢?
  • 你是否改变了grid标签的href属性?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
相关资源
最近更新 更多