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

ユーザーはここで compoff の日付と説明のみを編集できます...データベースから選択している ID フィールドは非表示になっています。

誰かがこの問題を修正するのを手伝ってくれますか

4

1 に答える 1

1

アクションidnrのパラメーターの名前をに変更するか、行の編集中にサーバーに送信するパラメーターのデフォルト名の名前をに変更する必要があります。これにはjqGridのオプションを使用できます。CompOffEditidididnrprmNames: {id: "idnr"}

同様に、アクションcompOffのパラメータの名前をとに変更する必要があります。または、アクションのパラメータとして、プロパティとしてのクラスインスタンスを使用することもできます。この場合、プロパティは編集行の値で初期化されます。CompOffEditCompOffDatereasonDescriptionCompOffDateDescriptionCompOffEditCompOffDateDescription

于 2012-06-27T14:01:28.473 に答える