none
Ayuda con Maestro Detalle (Guardar) RRS feed

  • Pregunta

  • Que tal amigos como indico en el encabezado necesito capturar un maestro detalle pero no se como diseñar el  modelo.

    podrían ayudarme para que las filas del cuadro en rojo sean evitables es decir texto donde pueda capturar información.

    el modelo para el siguiente create es:

       //[Notmapped]
        #region NewOfertaView
        public class NewOfertaView
        {
            #region Encabezado              
            public Nullable<int> UsuarioId { get; set; }
            
            [Required(ErrorMessage = "Requerido")]
            [Range(1, double.MaxValue, ErrorMessage = "Seleccione {0}")]
            [Display(Name = "Procedimiento")]
            public int LicitacionId { get; set; }
    
    
            public int? MaestroRequerimientoId { get; set; }
                         
            [Required(ErrorMessage = "Requerido")]
            [Range(1, double.MaxValue, ErrorMessage = "Seleccione {0}")]
            [Display(Name = "Licitante")]
            public int MaestroProveedorId { get; set; }
    
            [Range(1, double.MaxValue, ErrorMessage = "Debe ser >= {0}")]
            [Display(Name = "Partida")]
            public Nullable<int> Partida { get; set; }
    
            [Display(Name = "Gpo")]
            [Required(ErrorMessage = "Requerido")]
            public string Gpo { get; set; }
    
            [Display(Name = "Gen")]
            [Required(ErrorMessage = "Requerido")]
            public string Gen { get; set; }
    
            [Display(Name = "Esp")]
            [Required(ErrorMessage = "Requerido")]
            public string Esp { get; set; }
    
            [Display(Name = "Dif")]
            public string Dif { get; set; }
    
            [Display(Name = "Var")]
            public string Var { get; set; }
    
            
            [Required(ErrorMessage = "Requerido")]
            [Range(0.00, double.MaxValue, ErrorMessage = "You must enter values in {0} between {1} ")]
            [Display(Name = "Precio")]
            [DisplayFormat(DataFormatString = "{0:N2}", ApplyFormatInEditMode = true)]
            public double PrecioOfertado { get; set; }
                           
            [Required(ErrorMessage = "Requerido")]
            [Range(1, double.MaxValue, ErrorMessage = "{0} debe ser > 0")]
            [Display(Name = "Maximo Ofertado")]
            [DisplayFormat(DataFormatString = "{0:C2}", ApplyFormatInEditMode = false)]
            public double MaximoOfertado { get; set; }
    
            [Required(ErrorMessage = "Requerido")]
            [Range(1, double.MaxValue, ErrorMessage = "{0} debe ser > 0")]
            [Display(Name = "Minimo Ofertado")]
            [DisplayFormat(DataFormatString = "{0:C2}", ApplyFormatInEditMode = false)]
            public double MinimoOfertado { get; set; }
    
            [Required(ErrorMessage = "Requerido")]
            [Display(Name = "Descuento")]
            [DisplayFormat(DataFormatString = "{0:N2}", ApplyFormatInEditMode = true)]
            [Range(0.00, 99.99, ErrorMessage = "de ser entre {1} y {2}")]
            public double Descuento { get; set; }
    
    
            #endregion
    
            #region Cuerpo
            public List<DetalleOfertaTemp> DetalleOfertasTemp { get; set; }
            #endregion
                 
        }
        #endregion

    El modelo del que necesito hacer 10 elementos para capturar información del detalle es:

     public class DetalleOfertaTemp
        {
            [Key]        
            public int DetalleOfertaTempId { get; set; }
            //public int MaestroOferta_MaestroOfertaId { get; set; }
            public int UsuarioId { get; set; }
    
            public string Clase { get; set; }
    
            [Display(Name="Oficio Exime")]
            [Required(ErrorMessage = "{0} es requerido")]
            public string OficioExime { get; set; }
    
            [Display(Name = "Tramite Inclusión")]
            [Required(ErrorMessage = "{0} es requerido")]
            public string TramiteInclusion { get; set; }
    
            [Display(Name = "Marca /Den. Distintiva")]
            [Required(ErrorMessage = "{0} es requerido")]
            public string Marca { get; set; }
    
            [Display(Name = " Núm. Registro Sanitario")]
            [Required(ErrorMessage = "{0} es requerido")]
            public string RegistroSanitario { get; set; }
    
            [Display(Name = "Titular Registro Sanitario")]
            [Required(ErrorMessage = "{0} es requerido")]
            public string TitularRegistro { get; set; }
    
            [Display(Name = "Rfc Titular Registro")]
            [Required(ErrorMessage = "{0} es requerido")]
            public string RfcTitular { get; set; }
    
            [Display(Name = "Procedencia")]
            [Required(ErrorMessage = "{0} es requerido")]
            public string Origen { get; set; }
    
            [Display(Name = "Fabricante")]
            [Required(ErrorMessage = "{0} es requerido")]        
            public string Fabricante { get; set; }
    
            [Display(Name = "RFC Fabricante")]
            [Required(ErrorMessage = "{0} es requerido")]
            public string RfcFabricante { get; set; }
    
           // public virtual MaestroOferta MOFERMaestroOfertas { get; set; }             
        }

     Lo he intentado de la siguiente manera, pero únicamente  eh logrado mostrar los registros.

     public ActionResult Create()
            {
                var UsuarioId = Utilities.ObtenerUsuario(User.Identity.Name);
                try
                {
                    ViewBag.LicitacionId = new SelectList(Utilities.ObtenerLicitaciones()
                                            .Where(l => l.Activo), "LicitacionId", "NoLicitacion");
    
                    ViewBag.MaestroProveedorID = new SelectList(Utilities.ListarProveedores()
                                                .OrderBy(P => P.RazonSocial), "MaestroProveedorId", "RazonSocial");
    
                    List<DetalleOfertaTemp> DetalleOfertasTemp = new List<DetalleOfertaTemp>();
    
                    for (int i = 0; i < 10; i++)
                    {
                        DetalleOfertaTemp Lista = new DetalleOfertaTemp();
                        Lista.Clase = "Clase";
                        Lista.OficioExime = "Oficio Exime";
                        Lista.TramiteInclusion = "Tramite Inclusion";
                        Lista.Marca = "Marca";
                        Lista.RegistroSanitario = "Registro SAnitario";
                        Lista.TitularRegistro = "Titular del Registro";
                        Lista.RfcTitular = "RFC Titular";
                        Lista.Origen = "Procedencia";
                        Lista.Fabricante = "Fabricante";
                        Lista.RfcFabricante = "RFC Fabricante";
    
                        DetalleOfertasTemp.Add(Lista);
    
                    }
    
                    var view = new NewOfertaView
                    {
                        DetalleOfertasTemp = DetalleOfertasTemp.ToList(),
                        //                   .Where(dot => dot.UsuarioId == UsuarioId).ToList(),                
                    };  
                    return View(view);
    
                }
                catch (Exception Ex)
                {
                    ViewBag.LicitacionId = new SelectList(Utilities.ObtenerLicitaciones()
                                           .Where(l => l.Activo), "LicitacionId", "NoLicitacion");
    
                    ViewBag.MaestroProveedorID = new SelectList(Utilities.ListarProveedores()
                                                .OrderBy(P => P.MaestroProveedorId), "MaestroProveedorId", "RazonSocial");
                                
    
                    ModelState.AddModelError(string.Empty, Ex.Message);
                    return View();
                    // return View(view);
    
                }
    
            }

    Agradeceré su ayuda.



    Horacio Xochitemol Bautista

    viernes, 6 de enero de 2017 16:41

Todas las respuestas

  • hola

    >>las filas del cuadro en rojo sean evitables es decir texto donde pueda capturar información

    Pero tienes que definir textbox en el template de la tabla para que estos viajen en el post cuando realices el submit

    asi como lo tienes actualmente los datos del grid no se envian al action en el controller, tienes que cambiar la view

    En el grid veo que tienes un boton de edicion, eso quiere decir que redireccionas a otra pagina para editar la entidad, no lo haces sobre el propio grid

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 6 de enero de 2017 17:03
  • que tal Leandro como siempre agradezco tu apoyo podrías mas o menos darme una idea de como implementarlo.  gracias

    Horacio Xochitemol Bautista

    viernes, 6 de enero de 2017 20:36
  • >>podrías mas o menos darme una idea de como implementarlo

    pero como quieres implementarlo ? la idea es abrir alguna ventana ya sea popup para editar la entidad seleccionada o editar directo sobre la row poniendala en modo edicion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 6 de enero de 2017 21:03
  • Hola Leandro la idea que tengo la vis en una web del amigo Juan Carlos Arcila diaz. y es mas o menos así.

    Perola verdad no encuentro la forma de poder realizarlo, lo único que es todos los campos serian @Html.TextboxFor.

    gracias por tu apoyo


    Horacio Xochitemol Bautista

    viernes, 6 de enero de 2017 22:33