¿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();
}