2014-04-27 111 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'); 

        }); 
       } 
      } });