2014-02-19 3 views
0

Привет, я начал с JQgrid в MVC, и я выполняю операцию CRUD в JQgrid, когда я загружаю свою страницу, сетка заполняется необходимыми данными, но когда я удаляю или редактирую, i я получаю ошибку, когда я проверил его, ошибка была идентификатором пользователя, ожидаемого действием редактирования, не была инициализирована из представления. My View выглядит такРедактировать действие контроллера не получает форму 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); 
     } 
    } 

Что я должен сделать, чтобы получить мт идентификатор из моего вида. Заранее спасибо

+0

Вам необходимо сохранить те же имена переменных в контроллере, что и в вашем представлении или наоборот. –

ответ

0

Изменить подпись действий по:

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

Там нет никакого волшебного способа прикрепить значение к параметрам, связующий просто сопоставить их по именам.

+0

Эй, ребята, спасибо, он отлично работает. и в то время как получил другую проблему, ее об ошибке Состояние: «Не найдено». Код ошибки: 404, когда я добавляю запись. почему это так. пожалуйста помоги. –

+0

@NandishHosmane Убедитесь, что в контроллере есть действие 'AddNewUser', принимающее те же параметры. Если все еще не работает, проследите, куда идет ваш запрос (проще всего: откройте панель инструментов разработчика в IE или Firefox, F12, перейдите на вкладку «Сеть», а затем инициируйте действие сетки) –

 Смежные вопросы

  • Нет связанных вопросов^_^