Как перезаписать (пополнить) данные jqGrid из ответа ajax (из действия Struts 2)? - PullRequest
1 голос
/ 16 декабря 2011

У меня есть этот код только для отправки данных из уже загруженного 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)

Итак, id для таблицы jqGrid - #rowed3.Я знаю, что в функции ajax:

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

параметр ответа имеет новое содержимое в JSON для сетки.Я попробовал некоторые способы пополнения сетки данными, например, установив параметр «datastr» с его содержимым и другие.Кто-нибудь сталкивался до этой проблемы?

Спасибо.

Ответы [ 2 ]

1 голос
/ 16 декабря 2011

Я думаю, что вы, возможно, ищете метод grid.addJSONData.

Например:

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

Имейте в виду, что вам нужно убедиться, что ваш формат данных JSON соответствует указанномув считывателе JSON.

1 голос
/ 16 декабря 2011

Не изобретайте колесо здесь. jqGrid уже знает, как получать данные, поэтому вам не нужно вызывать $.ajax. Просто измените параметры сетки и скажите, чтобы он делал свое дело (из памяти; при необходимости исправьте имена функций, но это даст вам представление):

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