3

jqGirdJSON 文字列をロードできることがわかりました。

JSON データを jqGrid にマップするを参照してください。

この機能をsjg:gridタグで使用することはできますか?

tag 属性を調べたところ、Struts アクションを呼び出す URL からデータをロードでき、そのアクションが JSON データを返すことがわかりましたが、私のプログラムには既に JSON 値があり、それを に渡す必要がありますjqGird

タグがデータをサポートしていない場合、jqGridStruts 2 jQuery プラグインに含まれているものを使用する最善の方法は何ですか?

4

2 に答える 2

3

を に設定し、dataType="local"属性sjg:gridを削除しhrefます。次に、配列から行データを提供します。例えば

<sjg:grid
    id="gridtable"
    caption="Example (Editable/Multiselect)"
    dataType="local"
    pager="true"
    navigator="true"
    navigatorSearchOptions="{sopt:['eq','ne','lt','gt']}"
    navigatorAddOptions="{height:280, width:500, reloadAfterSubmit:true}"
    navigatorEditOptions="{height:280, width:500, reloadAfterSubmit:false}"
    navigatorEdit="true"
    navigatorView="true"
    navigatorViewOptions="{height:280, width:500}"
    navigatorDelete="true"
    navigatorDeleteOptions="{height:280, width:500,reloadAfterSubmit:true}"
    gridModel="gridModel"
    rowList="5,10,15"
    rowNum="5"
    rownumbers="true"
    editurl="%{editurl}"
    editinline="true"
    multiselect="true"
    onSelectRowTopics="rowselect"
    >

    <sjg:gridColumn name="id" index="id" title="Id" formatter="integer" editable="false" sortable="true" search="true" sorttype="integer" searchoptions="{sopt:['eq','ne','lt','gt']}"/>
    <sjg:gridColumn name="name" index="name" key="true" title="Country Name" editable="true" edittype="text" sortable="true" search="true" sorttype="text"/>

</sjg:grid>
<script type="text/javascript">
  $(document).ready(function(){
    var mydata = [{id:"1",name:"Roman C"}];
    //for(var i=0;i<=mydata.length;i++) $("#gridtable").jqGrid('addRowData',i+1,mydata[i]);
    $("#gridtable").jqGrid('setGridParam', {
        data: mydata
    }).trigger("reloadGrid");
  });
</script>
于 2014-04-28T11:13:27.203 に答える
2

上記のコードは完璧に機能し、グリッドの負荷ごとに行を追加します。これを使用できるたびに新しいデータが必要な場合:

            var allParameters = $("#gridtable").jqGrid("getGridParam");
                        allParameters.data = myData;
                        $("#gridtable").trigger('reloadGrid');

それ以外の:

      $("#gridtable").jqGrid('setGridParam', {
                            data: mydata
                        }).trigger("reloadGrid");

また、アクションへの ajax コールを作成し、リストを取得して解析し、myData に追加する場合も同様です。これをチェックして:

  $.ajax({
            url: "myAction.action", cache: false, dataType: 'json', data: "employeeId=" +
                    employeeIdList,
            success: function (data) {
                var jsonData = JSON.stringify(data.jsonResponse);
                var parsedData = JSON.parse(jsonData);
                if (parsedData.hasResults) {
                    var myData = parsedData.jsonResults;
                    $(document).ready(function () {
                        var allParameters = $("#gridtable").jqGrid("getGridParam");
                        allParameters.data = myData;
                        $("#gridtable").trigger('reloadGrid');

                    });
                }
            } });
于 2015-02-12T16:57:43.177 に答える