2014-02-19 35 views
0

您好我開始使用MVC中的JQgrid,我在JQgrid中執行CRUD操作,當我加載我的頁面時,網格將填充所需的數據,但是當我刪除或編輯時,我我收到錯誤,當我檢查它時,錯誤是編輯操作期望的用戶ID沒有從視圖初始化。 我查看看起來像這樣編輯控制器操作未收到身份證表格JQgrid

<table id="jQGridDemo"> 
    </table> 
    <div id="jQGridDemoPager"> 
    </div> 
    <script type="text/javascript"> 
     jQuery("#jQGridDemo").jqGrid({ 
      url: 'RTGUser/GetUserDetails', 

      datatype: "json", 
      colNames: ['Id', 'Name', 'Designation', 'City'], 
      colModel: [ 
      { name: 'Id', index: 'Id', width: 40, align: 'center', sortable: true, editable: false, key: true, editrules: { required: true} }, 
       { name: 'Name', index: 'Name', width: 40, align: 'center', sortable: true, editable: true, edittype: 'text', editrules: { required: true} }, 
       { name: 'Designation', index: 'Designation', width: 400, align: 'center', sortable: true, editable: true, edittype: 'text', editrules: { required: true} }, 
       { name: 'City', index: 'City', width: 150, align: 'center', sortable: true, editable: true, edittype: 'text', editrules: { required: true} } 
       ], 

      mtype: 'GET', 
      loadonce: true, 
      rowList: [5, 10, 20, 30], 
      pager: '#jQGridDemoPager', 
      sortname: 'Id', 
      viewrecords: true, 
      sortorder: 'desc', 
      caption: "List Of Users", 
      editurl: "RTGUser/EditUser", 
      onSelectRow: function(Id){ 
     if(id && id!==lastsel){ 
      jQuery('#rowed3').jqGrid('restoreRow',lastsel); 
      jQuery('#rowed3').jqGrid('editRow',Id,true); 
      lastsel=Id; 
     } 
    }, 


     }); 

     jQuery("#jQGridDemo").jqGrid('navGrid', '#jQGridDemoPager', 
     { edit: true, add: true, del: true, search: true }, 


      { url: "/RTGUser/EditUser/", closeAfterEdit: true, beforeShowForm: function (formid) { $("#Id",formid).hide(); } }, 
      { url: "/RTGUser/AddNewUser/", closeAfterAdd: true, beforeShowForm: function (formid) { $("#Id", formid).hide(); } }, 
      { url: "/RTGUser/DeleteUser/" }, {}); 

     $("#search").filterGrid("#grid", { 
      gridModel: false, 
      filterModel: [{ 
       label: 'Search', 
       name: 'search', 
       stype: 'text' 
      }] 
       }); 


    </script> 

和我的控制器

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult EditUser(string userId, string name, string desig, string city) 
    { 
     int uId = Convert.ToInt32(userId); 
     try 
     { 
      var query = from u in db.Users 
         where u.Id.Equals(userId) 
         select u; 
      User i = db.Users.SingleOrDefault(u => u.Id == uId); 
      if (!(i == null)) 
      { 
       var user = query.First(); 
       user.Name = name; 
       user.Designation = desig; 
       user.City = city; 
       db.SaveChanges(); 


      } 
      return Json(true); 
     } 
     catch (Exception) 
     { 
      // Do some error logging stuff, handle exception, etc. 
      return Json(false); 
     } 
    } 

我應該怎麼做才能從我的觀統領噸ID。 由於提前

+0

您需要在控制器中保留與您的View或Vice-Versa中相同的變量名稱。 –

回答

0

你的行動的簽名改爲:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult EditUser(string Id, string Name, string Designation, string City) 
{ 
} 

有將值附加到您的參數沒有神奇的方式,粘結劑將僅僅通過名稱匹配。

+0

嘿傢伙,謝謝,它完美的作品。並意味着有另一個問題,其錯誤狀態:'未找到'。錯誤代碼:404當我添加一條記錄。爲什麼如此。請幫忙。 –

+0

@NandishHosmane確保你的控制器中有'AddNewUser'動作,接受相同的參數。如果仍然無效,請跟蹤您的請求轉到哪裏(最簡單的方法:在IE或Firefox中打開開發人員工具欄,F12,轉到網絡選項卡,然後啓動網格操作) –