none
webgrid funcionalidad delete RRS feed

  • Pregunta

  • Buenas,

    Estoy intentando borrar una fila de un webgrid en MVC, este grid está en un PartialView ,al borrar desde el modelo registro se carga el partial como una pagina completa, es decir fuera de la view padre.

    View:

    @model MvcApplicationPruebas.Models.ModeloPersona
    @{
      
         WebGrid grid = new WebGrid(Model.lstPersonas);
    
    }
             @grid.GetHtml(htmlAttributes: new {id ="grid"},
            alternatingRowStyle: "alt" ,
            columns:        grid.Columns(
                grid.Column(columnName: "Student Name", header: "Name", format: @<text>@item.NombrePersona</text>) ,
                grid.Column(header: "Delete", format: @<text>@Html.ActionLink("dale", "DeletePerson",new { @class = "edit" }) </text>)
               ))

    Controlador:

              [HttpGet]
      public ActionResult DeletePerson()
              {
                  modelPersona = new ModeloPersona();
                  modelPersona.lstPersonas = (List<clsPersona>)Session["List"];
                  modelPersona.lstPersonas.ToList().RemoveAt(0);
                  Session["List"] = modelPersona.lstPersonas;
    
                  //return Json(true, JsonRequestBehavior.AllowGet);ç
                  return PartialView("PartialTabla", modelPersona);
              }

    Por otra parte, estoy utilizando una session para guardar el listado del modelo, ya que cada vez que se envia por urlaction u actionlink al controlado esta lista de modelo me llega anull, sin embargo al hacer submit desde el la vista padre llega el listado con todos los registros definidos.

    ¿Puede alguien indicarme como hacer esto o algun enlace donde expliquen como realizar estas operaciones?

    ¿Como puedo hacer para recuperar en cada envio asincrono desde el grid del partial, me llegue la lista previamente definida y no a null?

    muchas gracias

    domingo, 22 de febrero de 2015 2:54

Todas las respuestas

  • hola

    pero alli veo que eliminas el primer item de una lista que obtienes de la Session, no deberias ademas eliminarlo de la db tambien?

    ademas solo eliminas el primer item, no la seleccion

    te esta faltando enviar el id de la entidad que se selecciona en el post de la accion

    public ActionResult DeletePerson(int id){

    }

    en el Html.ActionLink cuando se renderiza el grid deberias poner el valor del id para que se envie al pulsarlo

    grid.Column(columnName: "Delete", format:(item)=>Html.ActionLink("Eliminar","DeletePerson",new{ id = item.id })),

    de esta forma le llegara el id al presionar el link y podrias usar

    public ActionResult DeletePerson(int id)
    {
    	
    	var list = (List<clsPersona>)Session["List"];
    	var item = list.FirstOrDefault(x=> x.Id == id);
    	list.Remove(item);
    	
    	Session["List"] = list;
    
    	ModeloPersona modelPersona = new ModeloPersona()
    	{
    		lstPersonas = list
    	};
    	
    	return PartialView("PartialTabla", modelPersona);
    }

    la idea es localizar el item en base al id para removerlo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina



    domingo, 22 de febrero de 2015 21:13