【问题标题】:Struts 2 jQuery grid load data from JSON stringStruts 2 jQuery 网格从 JSON 字符串加载数据
【发布时间】:2014-06-13 03:16:55
【问题描述】:

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

请参考map JSON data to jqGrid

这个功能可以和sjg:grid标签一起使用吗?

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

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

【问题讨论】:

  • 我认为应该是直截了当的。使用网格添加行数据。
  • @RomanC 你指的是哪一个:使用 sjg:grid 还是直接使用 jqGrid?!
  • 你能指导我如何使用 sjg:grid 吗?!

标签: java jsp struts2 struts2-jquery struts2-jquery-grid


【解决方案1】:

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

            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');

                    });
                }
            } });

【讨论】:

    【解决方案2】:

    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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      相关资源
      最近更新 更多