0

我有一个加载良好的 Struts2 jqGrid 页面。单击导航器刷新按钮时,我希望它从服务器重新加载网格。

    <sjg:grid
        altRows="false"
        id="gridtable"
        dataType="json"
        editurl="%{editurl}"
        filter="true"
        filterOptions="{stringResult:true}"
        gridModel="gridModel"
        gridview="true"
        height="600"
        href="%{remoteurl}"         
        loadonce="true"
        navigator="true"
        navigatorAdd="%{editPermission}"
        navigatorAddOptions="{
            closeAfterAdd:false,
            closeOnEscape:true,
            reloadAfterSubmit:true,
            addCaption:'Add Record'}" 
        navigatorDelete="false"
        navigatorEdit="%{editPermission}"
        navigatorEditOptions="{
            closeAfterEdit:false,
            closeOnEscape:true,
            afterSubmit:function(response, postdata) {
                        return isError(response.responseText);
                     }
        }"
        navigatorRefresh="true"
        navigatorSearch="false"
        onCompleteTopics="loadComplete"
        onSelectRowTopics="rowselect"
        onEditInlineBeforeTopics="beforeFormLoad"
        pager="true"
        pagerButtons="true"
        rowList="25,50,100"
        rowNum="25"
        rownumbers="true"
    >

单击刷新按钮时,我有以下绑定将数据类型设置为 json。

$("#refresh_gridtable").bind("click", function(){
    $("#gridtable").jqGrid("setGridParam", {datatype: 'json'});
    return [true];
});

但是,当我单击刷新按钮时,它只会在每次单击时从服务器重新加载数据。如果我对特定列执行客户端排序然后单击刷新它不会从服务器重新加载第一次单击,第二次单击将在没有排序的情况下从服务器刷新(排序图标此时在顶部仍然可见列),那么第三次点击不会命中服务器,但会应用排序。

如何每次都从服务器重新加载刷新,然后应用任何现有的排序/过滤字段?

4

1 回答 1

1

该解决方案在一定程度上取决于您使用的底层 jqGrid。如果您使用免费的 jqGrid 4.9,那么您可以使用附加选项navGrid: reloadGridOptions: { fromServer: true }

如果您使用旧版本的 jqGrid,那么您可以在重新加载之前直接使用回调beforeRefresh重置。我自己不使用 Struts2。所以我不知道你可以在哪里指定回调datatype"json"beforeRefresh

或者,您可以使用navigatorRefresh="false"从导航栏中删除标准刷新按钮,并使用navigatorExtraButtons它似乎可以替代navButtonAdd。如果我正确理解该选项,您可以指定免费代码onclick,它可以满足您的所有需求。您可以使用icon: "ui-icon-refresh"使自定义按钮看起来与标准的刷新按钮完全一样。onclick你可以在里面设置datatype: 'json'和触发"reloadGrid"

于 2015-06-19T14:47:52.433 回答