добавить дополнительный параметр в редактируемый URL, используя диалог формы - PullRequest
0 голосов
/ 29 марта 2012

Я создал Gird Uing JQGrid, и в этом я использую диалоговое окно формы для добавления, редактирования и удаления записи.

, но в Edit Record i want to pass the id of a record along with the url, даже если данные формы будут содержать это, как i am using RESTful url so to update a record i have to pass соответствующий идентификатор.как следует

www.example.com/eventInfo/10 , Method is PUT 

пока я пробовал

jQuery("#eventGrid").jqGrid('navGrid','#pager', {}, //options 

        {
                height:280,
                reloadAfterSubmit:false , 

               // How can i add Event id over here from grid 

                url:'http://www.eample.com/evenInfo',
                mtype:'PUT'


        }, // edit options 
        {
                height:280,
                reloadAfterSubmit:false
        }, // add options 
        {
                reloadAfterSubmit:false
        }, // del options
        {

        } // search options 


    ); 

Более того, я хочу отправлять данные на сервер в формате JSON, а не в виде данных формы

1 Ответ

1 голос
/ 29 марта 2012

Я описал здесь подробно, что вы должны делать в случае работы с сервисами RESTful.Обратный вызов onclickSubmit является лучшим местом для динамического изменения URL-адреса и добавления к нему id.

Текущий код jqGrid, установленный на github , устанавливает элемент DOMсетка как this.Таким образом, вы сможете использовать следующую

onclickSubmit: function (options, postdata) {
    options.url += '/' + encodeURIComponent(postdata.[this.id + "_id"]);
}

в следующей (после 4.3.1) версии jqGrid.В текущей версии jqGrid код будет примерно следующим:

var $grid = $("#eventGrid");

// set defaults for Delete form
$.extend($.jgrid.del, {
    mtype: "DELETE",
    reloadAfterSubmit: false
    serializeDelData: function () {
        return ""; // don't send and body for the HTTP DELETE
    },
    onclickSubmit: function (options, postdata) {
        options.url += '/' + encodeURIComponent(postdata);
    }
});

// set defaults for Edit and Add forms
$.extend($.jgrid.edit, {
    height: 280,
    reloadAfterSubmit: false,
    onclickSubmit: function (options, postdata) {
        // options.gbox will be like "#gbox_eventGrid"
        var gridId = options.gbox.substr(6), // cut id from the gbox selector
            id = postdata.[gridId + "_id"];
        if (id !== "_empty") {
            options.url += '/' + encodeURIComponent(id);
        }
    },
    afterSubmit: function (responseData) {
        // in case of usage reloadAfterSubmit: false it's important
        // that the server returns id of the new added row
        // in the simplest form the server response should just contain
        // the id. In more complex response one should modify the next line
        // to extract the id only from the response
        return [true, '', responseData];
    }
});

// create jqGrid
$grid.jqGrid({
    // all other parameters
    editurl: "/eventInfo" // you should use relative paths
});

// create navigator layer
$grid.jqGrid('navGrid', '#pager', {/*navGrid options*/}, { mtype: 'PUT'}); 

В приведенном выше коде я добавил afterSubmit, что важно, потому что вы используете опцию reloadAfterSubmit: false.

ПримечаниеЯ набрал в основном код выше или использовал вырезать и вставить, чтобы скопировать некоторые части из других старых ответов.Поэтому вы должны проверить приведенный выше код в вашем приложении.

...