Struts2jQuery网格从JSON字符串加载数据



我发现我们可以用JSON字符串加载jqGird

请参阅将JSON数据映射到jqGrid。

是否可以将此功能与sjg:grid标签一起使用?

我查看了标签属性,只发现数据可以从一个URL加载,该URL将调用Struts操作,该操作返回JSON数据,但在我的程序中,我已经有了JSON值,需要将其传递给jqGird

如果标签不支持数据,那么使用Struts2jQuery插件中包含的jqGrid的最佳方式是什么。

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>

上面的代码运行得很好,它为每个网格负载添加了行。如果你每次都想要新的数据,你可以使用这个:

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

代替:

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

此外,如果您想对action和fetch列表进行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');
                    });
                }
            } });

最新更新