JqG​​rid并不总是传递隐藏参数

时间:2018-02-22 13:45:46

标签: jqgrid

当我试图从jqGrid表中保存所有行时,隐藏的参数并不总是传递给控制器​​。例如,当我有20行要保存时,3个没有隐藏参数,其余17个都没问题。我有4.8.0版本的jqGrid。我的问题是,如果我的代码中出现了问题,或者jqGrid中出现了一些错误

$.each($(gridObject.TableId).jqGrid('getDataIDs'), function (i, val) {
                $(gridObject.TableId).jqGrid('editRow', val, true);
                $(gridObject.TableId).saveRow(val, undefined, gridObject.ControllerAddress + 'Edit', undefined);

            });

Wrong passed parameters

Correct passed parameters

表格定义:

$(gridObject.TableId).jqGrid({
        url: gridObject.ControllerAddress + 'Get',
        postData:
            {
                forSessionId: gridObject.PostData.ForSessionId,
                pepper: Math.random()
            },
        colNames: ['Participant',
            'Attended <input type="checkbox" id="allAttended" />',
            'Passed <input type="checkbox" id="allPassed" />',
            'Id', 'UserId', 'SessionId'],
        colModel: [

            // displayed always
            { name: 'ParticipantName' },
            {
                name: 'Attended', sortable: false, edittype: 'checkbox', formatter: 'checkbox', formatoptions: { disabled: false },editable: true,
                editoptions: {
                    value: GridsDictionaries.Checkbox.Default.value,
                    dataEvents: [{
                        type: 'change', fn: function (e) {
                            if ($(this).prop('checked')==false) {

                                var passedCheckbox = $(this).closest('tr').find('td[aria-describedby=participations_table_Passed] input[type=checkbox]');
                                $(passedCheckbox).removeProp('checked');
                            }
                        }
                    }]
                }
            },
            {
                name: 'Passed', sortable: false, edittype: 'checkbox', formatter: 'checkbox', formatoptions: { disabled: false }, editable: true,
                editoptions: {
                    value: GridsDictionaries.Checkbox.Default.value,
                    dataEvents: [{
                        type: 'change', fn: function (e) {
                            if ($(this).prop('checked')) {
                                var attendedCheckbox = $(this).closest('tr').find('td[aria-describedby=participations_table_Attended] input[type=checkbox]');
                                $(attendedCheckbox).prop('checked', true);
                            }
                        }
                    }]
                }
            },

        // hidden
        { name: 'Id', hidden: true, key: true },
        { name: 'ParticipantId', hidden: true, editable: true },
        { name: 'SessionId', hidden: true, editable: true },

        ],
        autowidth: true,
        pager: "",
        caption: "List of participants",
        //ondblClickRow: gridObject.ToggleEdition, onPaging: gridObject.OnPaging,
        loadComplete: function () {
            $.each($(gridObject.TableId).jqGrid('getDataIDs'), function (i, val) {
                $(gridObject.TableId).jqGrid('editRow', val, true);
                $(gridObject.TableId + ' tr#' + val).unbind('keydown');
            });
        },            
    });

1 个答案:

答案 0 :(得分:0)

这不是代码中的错误,而是功能。在创建jqGrid时,隐藏字段不可编辑,其值不会发布到服务器(本地数据)。

我强烈建议您发现Guriddo jqGrid的文档。

在上面的链接中解释了如何编辑这些字段。