0

我正在尝试从 jqgrid 编辑和保存多行。getChangedCells没有返回任何值。

代码如下:

<style>
.hlabel{font-weight:bold;font-size:10pt;}
.hdata{font-size:10pt;}
</style>

<script>

//this is a formatter for showing images

function imageFormatter(cellvalue, options, rowObject) {
        return "<img src='" + cellvalue + "'/>";
    };

//this gets called on edit mode to display datepickers.

    function onGridEdit(myRowID) {
        $("#" + myRowID + "_booked").datepicker({ dateFormat: 'dd/mm/yy' });
        $("#" + myRowID + "_vesselarrival").datepicker({ dateFormat: 'dd/mm/yy' });
        $("#" + myRowID + "_vesseldock").datepicker({ dateFormat: 'dd/mm/yy' });
        $("#" + myRowID + "_markdown").datepicker({ dateFormat: 'dd/mm/yy' });
        // this will set focus on the Invested column so the datepicker doesn't fire
        $("#" + myRowID + "_vesselname").get(0).focus();
    }

$(function () {

var lastsel2

//creating the grid

        $("#gditems").jqGrid({
            url: 'handlers/items.ashx?id=' + PID,
            datatype: "xml",
            mtype: "POST",
            colNames: ['Style', 'Altcode2', 'Colour', 'Group', '800', '999', 'Order', 'Received', 'Due', 'B/O', 'Image', 'Out/Full', 'Booked', 'Current',           'Slip', 'Arrival', 'Dock', 'Name', 'Freight', 'RRP', 'Mark Down', 'Sell', 'Cost'],
            colModel: [
{ name: 'code1', index: 'code1', width: '50', sortable: true },
{ name: 'code2', index: 'code2', width: '30', sortable: true },
    { name: 'Due', index: 'Due', sorttype: 'integer', width: '20', sortable: false },
    { name: 'image', index: 'image', width: '30', formatter: imageFormatter, sortable: false },
    { name: 'booked', index: 'booked', width: '30', sortable: false, datefmt: "d/m/Y", editable: true, editrules: { date: true} },
    { name: 'date1', index: 'date1', width: '40' },
    { name: 'slip', index: 'slip', width: '30', sortable: false },
    { name: 'arrival', index: 'arrival', width: '30', sortable: false, datefmt: "d/m/Y", editable: true, editrules: { date: true} },
    { name: 'dock', index: 'dock', width: '30', sortable: false, datefmt: "d/m/Y", editable: true, editrules: { date: true} },
    { name: 'vname', index: 'vname', width: '30', sortable: false, editable: true },
    { name: 'price', index: 'price', sorttype: 'currency', width: '30', formatter: 'currency', formatoptions: { decimalPlaces: 2, prefix: "£"} },
    { name: 'date2', index: 'date2', width: '30', sortable: false, editable: true, datefmt: "d/m/Y", editrules: { date: true} },
{ name: 'price2', index: 'price2', sorttype: 'currency', width: '30', formatter: 'currency', formatoptions: { decimalPlaces: 2, prefix: "£"}}],

 //saving into clientarray

            onSelectRow: function (id) {
                if (id && id !== lastsel2) {
                    jQuery("#gdpoitems").saveRow(lastsel2, false, 'clientArray');
                    jQuery('#gdpoitems').editRow(id, true, onGridEdit, null,   'clientArray');
                    lastsel2 = id;
                }
            },


            editurl: "clientArray",
            cellSubmit: 'clientArray',
            rowNum: 20,
            height: "100%",
            autowidth: true,
            rowList: [20, 30],
            pager: jQuery('#pgitems'),
            viewrecords: true,
            sortorder: "asc",
            caption: "",
            loadonce: false

        });

//adding buttons to the nav bar

        jQuery("#gditems")
        .navGrid('#pgitems', { edit: false, add: false, del: false, search: false }).navButtonAdd('#pgitems', {
            caption: "Save",
            buttonicon: "ui-icon-disk",
            onClickButton: function () {

                $.post("handlers/details.ashx?id=" + PID, { c1: $("#txtc1").val(), c2: $("#txtc2").val(), c3: $("#txtc3").val() }, function (data) {

//trying to get the edited data.

                    var ret = $("#gditems").getChangedCells('all');
                    var ret2 = JSON.stringify(ret);
                    alert(ret);


                    $.ajax({
                        type: "POST",
                        url: "handlers/items.ashx?edit=1&id=" + PID,
                        data: ret2,
                        dataType: "json",
                        contentType: "application/json; charset=utf-8",
                        success: function (response, textStatus, xhr) {
                            alert("success");
                        },
                        error: function (xhr, textStatus, errorThrown) {
                            alert("error");
                        }
                    });

                });
            },
            position: "last"
        })
        .navButtonAdd('#pgitems', {
            caption: "Cancel",
            buttonicon: "ui-icon-cancel",
            onClickButton: function () {
                $("#header").show();
                $("#detail").hide();
                return false;
            },
            position: "last"
        });

</script>
<div>


 <br />

<table id="gditems">
</table>
<div id="pgitems">  </div>
</div>
4

0 回答 0