2014-04-27 40 views
2

我发现我们可以用JSON字符串加载jqGird。 请参阅map JSON data to jqGridStruts 2 jQuery网格从JSON字符串加载数据

是否可以在sjg:grid标记中使用此功能。

我看标签属性,只发现数据可以从一个URL调用一个struts动作,该动作返回一个JSON数据,但在我的程序中我已经有了JSON值并需要通过它给jqGird。

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

+0

我认为这应该是直截了当的。使用网格添加行数据。 –

+0

@RomanC你的意思是:使用sjg:grid还是直接使用jqGrid ?! –

+0

是的,无论如何。 –

回答

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> 
1

上面的代码工作完美,它为每个网格加载添加行。如果ü要作出行动Ajax调用并获取列表,并解析它添加到myData的

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

另外:如果妳希望有新的数据,每次ü可以使用这样的:

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

代替。检查此:

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

        }); 
       } 
      } });