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];
});

ただし、更新ボタンをクリックすると、1 回おきにサーバーからデータがリロードされるだけです。特定の列でクライアント側の並べ替えを実行し、[更新] をクリックすると、最初のクリックではサーバーからリロードされず、2 回目のクリックでは並べ替えなしでサーバーから更新されます (この時点では、並べ替えアイコンはまだ上部に表示されています)。列の)、3 回目のクリックはサーバーにヒットしませんが、並べ替えが適用されます。

毎回サーバーから更新をリロードしてから、既存の並べ替え/フィルター フィールドを適用するにはどうすればよいですか?

4

1 に答える 1

1

解決策は、使用する基礎となる jqGrid に少し依存します。無料の jqGrid 4.9を使用する場合は、追加のオプションnavGrid:を使用できますreloadGridOptions: { fromServer: true }

古いバージョンの jqGrid を使用している場合は、コールバックを使用して、リロードする直前beforeRefreshにリセットできます。私自身は Struts2 を使用していません。だから私はあなたがコールバックを指定できる場所がわからないdatatype"json"beforeRefresh

navigatorRefresh="false"または、ナビゲーターバーから標準の更新ボタンを削除し、navButtonAddnavigatorExtraButtonsの代わりと思われるボタンを使用することもできます。私がオプションを正しく理解していれば、 のフリーコードを指定できます。これで必要なことはすべて実行されます。を使用して、カスタム ボタンを標準の [更新] ボタンとまったく同じように見せることができます。あなたの中で設定してトリガーすることができます。onclickicon: "ui-icon-refresh"onclickdatatype: 'json'"reloadGrid"

于 2015-06-19T14:47:52.433 に答える