mvc asp.net asp.net-mvc jqgrid jqgrid-asp.net mvcjqgrid

¿Cómo eliminar registros múltiples en jqgrid usando asp.net mvc?



jqgrid crud operations (1)

¿Podrían ayudarme por favor cómo podría eliminar múltiples registros seleccionados en mi jqgrid? Lo intenté de varias maneras, pero hasta ahora no he tenido éxito. Estaré agradecido a cualquiera que pueda ayudarme.

jQuery("#grid-table").jqGrid({ //direction: "rtl", url: "/Lojas/GetLojas", datatype: ''json'', mtype: ''Get'', height: ''100%'', colNames: [ '' '', ''Name'', ''Description'' ], colModel: [ { name: ''myac'', index: '''', width: 65, fixed: true, sortable: false, resize: false, formatter: ''actions'', formatoptions: { keys: true, delOptions: { recreateForm: true, url: ''/Lojas/Delete'', beforeShowForm: beforeDeleteCallback }, editformbutton: true, editOptions: { recreateForm: true, url: ''/Lojas/Edit'', closeAfterEdit: true, beforeShowForm: beforeEditCallback, closeOnEscape: true } } }, { key: true, hidden: true, name: ''Id'', index: ''Id'', sorttype: "int", editable: false }, { key: false, name: ''Name'', index: ''Name'', editable: true}, { key: false, name: ''Description'', index: ''Description'', editable: true} ], viewrecords: true, loadonce: true, rowNum: 10, rowList: [5, 10, 15], jsonReader: { root: "rows", page: "page", total: "total", records: "records", repeatitems: false, Id: "0" }, pager: pager_selector, altRows: true, autowidth: true, multiselect: true, multiboxonly: true, sortorder: "desc", multiboxonly: true, caption: "Lojas Cadastradas" }); //navButtons jQuery("#grid-table").jqGrid(''navGrid'', pager_selector, { edit: true, add: true, del: true, search: true, refresh: true, view: true, }, { url: ''/Lojas/Edit'', closeOnEscape: true, closeAfterEdit: true, recreateForm: true }, { url: ''/Lojas/Create'', closeOnEscape: true, closeAfterAdd: true, recreateForm: true }, { url: ''/Lojas/Delete'', closeOnEscape: true, closeAfterDelete: true, recreateForm: true }, { //search form recreateForm: true, closeOnEscape: true, closeAfterSearch: true, multipleSearch: true }, { //view record form recreateForm: true } )

Código en mi controlador:

public ActionResult Delete(Loja loja) { Loja lojaToDelete = db.Lojas.Find(loja.Id); if (lojaToDelete == null) { return HttpNotFound(); } db.Lojas.Remove(lojaToDelete); db.SaveChanges(); return View(loja); }


Te recomiendo que cambies el prototipo de la función de eliminación public ActionResult Delete(Loja loja) a

public void Delete(string id)

El problema principal en tu código es el siguiente. Corresponde a la documentación del parámetro jqGrid post id a url: ''/Lojas/Delete'' . Puede cambiar el nombre del nombre del parámetro id con prmNames . En este caso, puede usar prmNames: {id: "Id"} , pero en realidad no es obligatorio.

Si se deben eliminar varias filas, la cadena de id se se secará en coma y se puede usar algo como

public void Delete(string id) { var ids = id.Split('',''); foreach (lojaId in ids) { Loja lojaToDelete = db.Lojas.Find(lojaId); if (lojaToDelete == null) throw new HttpResponseException(HttpStatusCode.NotFound); db.Lojas.Remove(lojaToDelete); } db.SaveChanges(); }