0

我有这样的 jQuery 代码

$(document).ready(function () {

         var lastsel;

    $('#jqgProducts').jqGrid({
             //url from wich data should be requested
             url: '@Url.Action("CompOff")',
         //type of data
         datatype: 'json',
         //url access method type

         mtype: 'POST',
         //columns names

         ondblClickRow: function (id) {
             if (id && id !== lastsel) {
                 jQuery('#list').restoreRow(lastsel);
                 jQuery('#list').editRow(id, true);
                 lastsel = id;
             }
             $('#jqgProducts').editRow(id, true,null, null);
         },

         editurl: '@Url.Action("CompOffEdit")',
         colNames: ['IdNr', 'CompOffDate', 'Description', 'ExpiryDate', 'IsApproved', 'AppliedOn'],
         //columns model
         colModel: [
                    { name: 'Id', index: 'Id', align: 'center', editable: true, hidden: true},
                        { name: 'CompOffDate', index: 'CompOffDate', align: 'center', formatter: 'date', formatoptions: { newformat: 'd/m/Y' }, editable: true },
                          { name: 'Description', index: 'Description', align: 'center', editable: true, editoptions: { maxlength: 200} },
                        { name: 'ExpiryDate', index: 'ExpiryDate', align: 'center', formatter: 'date', formatoptions: { newformat: 'd/m/Y' }, editable: false },
                        { name: 'IsApproved', index: 'IsApproved', align: 'center', editable: false },

                        { name: 'AppliedOn', index: 'AppliedOn', align: 'center', formatter: 'date', formatoptions: { newformat: 'd/m/Y' }, editable: false }

                      ],
         //pager for grid
         pager: $('#jqgpProducts'),
         //number of rows per page
         rowNum: 10,
         //initial sorting column
         sortname: 'CompOffDate',
         //initial sorting direction
         sortorder: 'asc',
         //we want to display total records count
         viewrecords: true,

         caption: 'Comp Off Details',
         //grid height
         height: '100%',

         jsonReader: {
             root: "rows",
             page: "page",
             total: "total",
             records: "records",
             repeatitems: false,
             cell: "cell",
             id: "id",
             userdata: "userdata"
         }
     });

});

我的控制器是这样的

   public ActionResult CompOffEdit(int Id,DateTime CompOffDate, string Description)
    {
        RegisterCompOff r = db.RegisterCompOffs.Where(l=>l.Id==Id).SingleOrDefault();
        if (!(r == null))
        {
            r.CompOffDate = CompOffDate;
            r.Description = Description;
            db.Entry(r).State = EntityState.Modified;
            db.SaveChanges();
            return Content("true");
        }
        else
        {
            return Content("false");
        }

    }

当我试图将编辑保存到 db..我得到这个异常

The parameters dictionary contains a null entry for parameter 'idnr' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult CompOffEdit(Int32, System.DateTime, System.String)' in 'AGS.Hrms.Controllers.CompOffController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters

用户只能在此处编辑补偿日期和描述...并且我从数据库中选择的 id 字段被隐藏。

有人可以帮我解决这个问题吗

4

1 回答 1

1

您应该将操作的idnr参数重命名为,或者您应该将在行编辑期间发送到服务器的参数的默认名称重命名为。您可以为此使用 jqGrid 选项。CompOffEditidididnrprmNames: {id: "idnr"}

以同样的方式,您应该将操作compOff参数重命名CompOffEditCompOffDate和。或者,您可以使用一些具有和作为属性的类实例作为操作的参数。在这种情况下,and属性将使用编辑行中的值进行初始化。reasonDescriptionCompOffDateDescriptionCompOffEditCompOffDateDescription

于 2012-06-27T14:01:28.473 回答