Struts 2 jQuery grid load data from JSON string

前端 未结 2 621
清酒与你
清酒与你 2021-01-14 21:05

I found that we can load the jqGird with JSON string. Please refer to map JSON data to jqGrid

Is it possible to use this feature with sjg:grid tag.

相关标签:
2条回答
  • 2021-01-14 21:14

    Set the dataType="local" to the sjg:grid and remove href attribute. Then provide row data from the array. For example

    <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>
    
    0 讨论(0)
  • 2021-01-14 21:33

    The above code works perfect, it add rows for each grid load. If u want new data every time u can use this:

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

    Instead of:

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

    Also if u want to make an ajax call to action and fetch list and parse it to add to myData. Check this:

      $.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');
    
                        });
                    }
                } });
    
    0 讨论(0)
提交回复
热议问题