JqG​​rid中删除一行时在Server端获取主键

Get the primary key in Server side when delete a row in JqGrid

当我 select 要删除一行时,不确定如何在服务器端获取主键。 客户端:

jQuery(gridSelector).jqGrid({
            url: API_URL + 'GetVendors',
            datatype: 'json',
            mtype: 'GET',
            height: 'auto',
            colNames: ['pkey', 'Company', 'ContactName', 'ContactPhone', 'UserName', 'UserKey', 'Active', 'FacilityId', 'ClientId', 'PhotoURL', 'PushToGP'],
            colModel: [
                {
                    name: 'pkey', index: 'pkey', width: 50, hidden: true,
                    formatter: 'integer'
                },
                { name: 'Company', width: 120 },
                { name: 'ContactName', width: 110 },
                { name: 'ContactPhone', width: 120 },
                { name: 'UserName', align: "right", width: 90 },
                { name: 'UserKey', align: "right", width: 120, hidden: true },
                { name: 'Active', width: 50, edittype: "checkbox", editoptions: { value: "True:False" }, unformat: aceSwitch },
                { name: 'FacilityId', align: "right", width: 100, formatter: "integer" },
                { name: 'ClientID', align: "right", width: 100, formatter: "integer" },
                { name: 'PhotoURL', align: "right", width: 80 },
                { name: 'PushToGP', align: "right", width: 80, edittype: "checkbox", editoptions: { value: "True:False" }, unformat: aceSwitch }
            ],
            cmTemplate: { autoResizable: true, editable: true },
            rowNum: 10,
            rowList: [10, 20, 30],
            pager: pagerSelector,
            sortname: 'company',
            sortorder: "asc",
            viewrecords: true,
            jsonreader: {
                root: "rows",
                page: "page",
                total: "total",
                records: "records"
            },
            loadComplete: function () {
                var table = this;
                setTimeout(function () {
                    updatePagerIcons(table);
                    enableTooltips(table);
                }, 0);
            },
            caption: "Vendor Managerment"
        });

        $(gridSelector).jqGrid('navGrid', pagerSelector,
                {
                    //navbar options
                    edit: true,
                    editicon: 'ace-icon fa fa-pencil blue',
                    add: true,
                    addicon: 'ace-icon fa fa-plus-circle purple',
                    del: true,
                    delicon: 'ace-icon fa fa-trash-o red',
                    search: true,
                    searchicon: 'ace-icon fa fa-search orange',
                    refresh: true,
                    refreshicon: 'ace-icon fa fa-refresh green',
                    view: true,
                    viewicon: 'ace-icon fa fa-search-plus grey'
                },

                {
                    //delete record form
                    closeAfterDelete: true,
                    recreateForm: true,
                    mtype: 'DELETE',
                    delData: {
                        record: function () {
                            var sel_id = $(gridSelector).jqGrid('getGridParam', 'selrow');
                            var value = $(gridSelector).jqGrid('getCell', sel_id, '_id');
                            return value;
                        }
                    },
                    onclickSubmit: function (params, postdata) {
                        params.url = API_URL + 'DeleteVendor';
                    },
                    beforeShowForm: function (e) {
                        var form = $(e[0]);
                        if (form.data('styled')) return false;

                        form.closest('.ui-jqdialog').find('.ui-jqdialog-titlebar').wrapInner('<div class="widget-header" />');
                        styleDeleteForm(form);

                        form.data('styled', true);
                    }
                }

难点在服务器端,如何获取主键。

// DELETE
[System.Web.Http.HttpDelete()]
public void DeleteVendor()
    {
        try
        {
            var pkey = Convert.ToInt64(Request.Form["id"]); // here!!!
            _vendorRespository.RemoveVendor(pkey);
        }
        catch (Exception e)
        {
            Debug.WriteLine(e.Message);
        }
    }

我无法从服务器端代码中的 Request 获取删除行数据。 Request.Form 键只包含三个:"oper"、"id" 和 "record"。感谢您的帮助。

请尝试将 key:true 放在您的主列上,然后查看 Request.Form["id"] returns 您在服务器上的主键值边.

colModel: [
            {
                name: 'pkey', index: 'pkey', width: 50, key:true, hidden: true, formatter: 'integer'
            },