如何从ajax响应(来自Struts 2动作)重新加载(重新填充)jqGrid数据?

时间:2011-12-16 15:49:51

标签: jquery jqgrid struts2

我有这个代码只是为了从已加载的jqGrid发送数据:

jQuery("#bedata").click(function(){ //Function for button "bedata"

 var postData = "SOME DATA TO SEND"

//Sending data:
$.ajax({
    type: "POST";
    url: "GuardaFila.action", //Action called to data treatament (Struts 2)
    data : {
        jgGridData: postData, //PARAMETER jgGrdData with variable "postData" value
        customData: "someinfo" //Just another parameter called "customData" with more data,
    },

    dataType:"json",
    contentType: "application/x-www-form-urlencoded; charset=utf-8",

//Success function has the key that I am looking for:
    success: function(response, textStatus, xhr) {
        //SOME CODE HERE TO REFILL jqGrid.
        alert("success");
     },
    error: function(xhr, textStatus, errorThrown) {
        alert("error");
    }

});
});

jqGrid是以这种方式创建的:

  jQuery("#rowed3").jqGrid({
                url:'CargaTabla.action',
                datatype: "json",
                colNames:['id', 'Direccion', 'Nombre'],
                colModel:[
                    {name:'id',index:'id', width:55},
                    {name:'direccion',index:'direccion', width:90, editable:true},
                    {name:'nombre',index:'nombre', width:100,editable:true}
                ],
                jsonReader: {
                    root: 'gridModel',
                    id: '0',
                    cell :"",
                    repeatitems: false
                },


(....... etc)

因此,jqGrid表的id是#rowed3。我知道在ajax函数中:

        success: function(response, textStatus, xhr) {
        //SOME CODE HERE TO REFILL jqGrid.
        alert("success");
     },

响应参数在网格的JSON中有一个新内容。我尝试了一些方法,用其数据重新填充网格,将其“datastr”参数与其内容和其他内容一起设置。有人面临这个问题吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

不要在这里重新发明轮子。 jqGrid已经知道如何获取数据,因此您无需调用$.ajax。只需更改网格参数并告诉它做它的事情(从内存;如果需要,更正确的函数名称,但这会给你的想法):

var opts = { url: "GuardaFila.action", postData: postData };
grid.setGridParam(opts);
grid.trigger("reloadGrid");

答案 1 :(得分:1)

我认为您可能正在寻找grid.addJSONData方法。

例如:

success: function (data, textStatus) {
    if (textStatus == "success") {
       var grid = $("#rowed3")[0];
       grid.addJSONData(JSON.parse(data.d));
   }
},

请记住,您需要确保您的JSON数据格式与JSON阅读器中指定的格式相匹配。