参数在jqGrid中删除

时间:2012-10-25 18:25:04

标签: jqgrid jqgrid-asp.net jqgrid-formatter jqgrid-inlinenav

我想为jqGrid实现删除,我有(示例)2表Request和Item

请求字段为RequestIdWayBillNoCustomer
项目字段为RequestIdItemNOQuantity
请求表RequestId是pk,项目表pk是RequestIdItemNO我为项目表编写此代码

var requestIdItem=0, itemIdItem=0;
var gridItem = $('#listItem');
gridItem.jqGrid({
    url: 'jQGridHandler.ashx',
    postData: { ActionPage: 'ClearanceItems', Action: 'Fill', requestId: rowid },
    ajaxGridOptions: { cache: false },
    datatype: 'json',
    height: 200,
    colNames: ['RequestId','ItemNo',Quantity],
    colModel: [
        { name: 'REQUEST_ID', width: 100, sortable: true,hidden:true },
        { name: 'ITEM_NO', width: 200, sortable: true }
        { name: 'Quntity', width: 100, sortable: true  }
    ],
    gridview: true,
    rowNum: 20,
    rowList: [20, 40, 60],
    pager: '#pagerItem',
    viewrecords: true,
    sortorder: 'ASC',
    rownumbers: true,
    //onSelectRow: function (id, state) {
    //    requestIdItem = gridItem.jqGrid('getCell', id, 'REQUEST_ID_ID');
    //    alert(requestIdItem);
    //    itemIdItem = gridItem.jqGrid('getCell', id, 'ITEM_NO');
    //    alert(itemIdItem);
    //}
    //,
    beforeSelectRow: function (itemid, ex) {
        requestIdItem = gridItem.jqGrid('getCell', itemid, 'REQUEST_ID_ID');
        itemIdItem = gridItem.jqGrid('getCell', itemid, 'ITEM_NO');

        return true;
    }

});
gridItem.jqGrid('navGrid', '#pagerItem', { add: false, edit: false, del: true }, {}, {}, {
    //alert(requestIdItem);
    url: "JQGridHandler.ashx?ActionPage=ClearanceItems&Action=Delete&REQUEST_ID=" +
         requestIdItem + "&ITEM_NO=" + itemIdItem
}, { multipleSearch: true, overlay: false, width: 460 });

我为项目表编写此代码,现在我想在Item表中为删除项目编写代码我为发送参数值编写此代码

url: "JQGridHandler.ashx?ActionPage=ClearanceItems&Action=Delete&REQUEST_ID=" +
     requestIdItem + "&ITEM_NO=" + itemIdItem

但总是向服务器发送0值,请帮帮我。谢谢所有

EDIT01:我更改删除选项为此: 我在此页面中看到http://stackoverflow.com/questions/2833254/jqgrid-delete-row-how-to-send-additional-post-data用户@Oleg编写此代码

gridItem.jqGrid('navGrid', '#pagerItem', { add: false, edit: false, del: true }, {}, {}, {
    serializeDelData: function (postdata) {
        alert(postdata.id);
        return ""; // the body MUST be empty in DELETE HTTP requests
    },
    onclickSubmit: function (rp_ge, postdata) {
        //  alert(postdata.id);
        var rowdata = $("#listItem").getRowData(postdata.id);
        alert(rowdata.REQUEST_ID_ID);
        rp_ge.url = 'JQGridHandler.ashx?ActionPage=ClearanceItems&Action=Delete&' +
                    $.param({ rr: rowdata.REQUEST_ID_ID });

        // 'subgrid.process.php/' + encodeURIComponent(postdata.id) +
        //    '?' + jQuery.param({ user_id: rowdata.user_id });
    }
    //alert(requestIdItem);
    // url: "JQGridHandler.ashx?ActionPage=ClearanceItems&Action=Delete&REQUEST_ID=" +
    //      requestIdItem + "&ITEM_NO=" + itemIdItem
}, { multipleSearch: true, overlay: false, width: 460 })

向服务器发送数据时发送undefined

1 个答案:

答案 0 :(得分:2)

首先,在我看来,您的代码中输入错误。您应该在代码中的任何位置将REQUEST_ID_ID替换为REQUEST_ID

如果您需要向服务器发送一些其他信息,可以使用

onclickSubmit: function (rp_ge, postdata) {
    var requestId = $(this).jqGrid("getCell", postdata.id, "REQUEST_ID");
    // alert("REQUEST_ID=" + requestId);
    return { rr: requestId });
}

如果rr将作为删除请求的附加参数与id参数一起发布。

如果您确实需要将信息作为URL的一部分而不是POST请求正文的一部分发送,您可以执行以下操作

onclickSubmit: function (rp_ge, postdata) {
    var requestId = $(this).jqGrid("getCell", postdata.id, "REQUEST_ID");
    // alert("REQUEST_ID=" + requestId);
    rp_ge.url = "JQGridHandler.ashx?" +
        $.param({
            ActionPage: "ClearanceItems",
            Action: "Delete",
            rr: requestId
        });
}