none
2 tablas procedure Agregar con DropDownlist mvc C# RRS feed

  • Pregunta

  • Buenas tardes foro

    Estoy utilizando SqlServer 2014 con Visual Studio 2019

    Tengo la siguiente duda:

    Como puedo agregar datos que tengo en la tabla Colonia con un  DropDownlist ,  en el formulario realizado en la Tabla Ciudadano y que están relacionada entre si.

    que el  DropDownlisty al momento de seleccionar mis campos que se encuentran en la tabla colonia, se agreguen en el procedimiento almacenado llamdo Add_Ciudadano en la tabla Ciudadano..

    De antemano agradezco su valioso apoyo

    Ejemplo:

    Formulario


    Mi procedimiento almacenado se llama AddCiudadano y contiene los siguientes campos

    id_ciudadano, nombre,  apellido_paterno, apellido_Materno,   id_colonia, colonia


    Tengo mi modelo MVC

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.ComponentModel.DataAnnotations;
    using SistemaMc.Models;
    using System.Web.Mvc;
    
    namespace SistemaMc.Models
    {
        public class ModelCiudadanos
        {
    
            [Key]
            public int id_ciudadano { get; set; }
    
            public string Nombre { get; set; }
    
            public string apellido_paterno { get; set; }
    
            public string apellido_materno { get; set; }
    
             public int id_colonia { get; set; }
    
             public string colonia { get; set; }
    
    
    
        }
    }


    Conexion a base de datos

    namespace SistemaMc.Models
    {
        public class CRUDCiudadano
        {
            private SqlConnection con;
            private void connection()
            {
                string constring = ConfigurationManager.ConnectionStrings["ConDB"].ToString();
                con = new SqlConnection(constring);
            }
    
            // **************** AÑADIR NUEVO CIUDADANO *********************
            public bool AddCiudadano(ModelCiudadanos smodel)
            {
    
                List<SelectListItem> items = new List<SelectListItem>();
                System.Data.SqlClient.SqlDataReader reader;
    
    
                connection();
                SqlCommand cmd = new SqlCommand("proc_addCIUDADANO", con);
                cmd.CommandType = CommandType.StoredProcedure;
    
                cmd.Parameters.AddWithValue("@id_ciudadano", smodel.id_ciudadano);
         
                cmd.Parameters.AddWithValue("@nombre", smodel.nombre);
                cmd.Parameters.AddWithValue("@apellido_paterno", smodel.apellido_paterno);
                cmd.Parameters.AddWithValue("@apellido_materno", smodel.apellido_materno);
                cmd.Parameters.AddWithValue("@id_colonia", smodel.id_colonia);
                cmd.Parameters.AddWithValue("@colonia", smodel.colonia);
               
    
                con.Open();
    
                 int i = cmd.ExecuteNonQuery();
                con.Close();
    
                if (i >= 1)
                    return true;
                else
                    return false;
            }
    }
    

    el controlador



    public ActionResult Add() { return View(); } public ActionResult Add(ModelCiudadanos smodel) { try { if (ModelState.IsValid) { Models.CRUDCiudadano cdb = new CRUDCiudadano(); if (cdb.AddCiudadano(smodel) ) { ViewBag.message = "Ciudadano Agregado Correctamente"; ModelState.Clear(); } } return View(); } catch { return View(); } }

    Vista

    @model SistemaMc.Models.ModelCiudadanos
    
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/jqueryval")
    
    
    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
    
        <div class="form-horizontal">
            <h4>ModelCiudadanos</h4>
            <hr />
            @Html.ValidationSummary(true, "", new { @class = "text-danger" })
            <div class="form-group">
    
    
    <div class="form-group">
                @Html.LabelFor(model => model.nombre, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.nombre, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.nombre, "", new { @class = "text-danger" })
                </div>
            </div>
    
            <div class="form-group">
                @Html.LabelFor(model => model.ap, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.ap, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.ap, "", new { @class = "text-danger" })
                </div>
            </div>
    
            <div class="form-group">
                @Html.LabelFor(model => model.am, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.am, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.am, "", new { @class = "text-danger" })
                </div>
            </div>
    
     <div class="form-group">
                @Html.LabelFor(model => model.id_colonia, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.id_colonia, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.id_colonia, "", new { @class = "text-danger" })
                </div>
            </div>
    
    <div class="form-group">
                @Html.LabelFor(model => model.colonia, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.colonia, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.colonia, "", new { @class = "text-danger" })
                </div>
            </div>
    
    <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Create" class="btn btn-default" />
                </div>
            </div>
        </div>
    }
    
    <div>
        @Html.ActionLink("Back to List", "Index")
    </div>




    • Editado mmarquez04 viernes, 17 de abril de 2020 23:42
    viernes, 17 de abril de 2020 23:16

Respuestas

  • hola

    Porque defines los campos id_colonia, colonia en la tabla de Ciudadano? el id esta bien porque se relaciona con la Colonia, pero para que el otro campo, ese esta de mas, si necesitas la descripcion puedes hacer un JOIN entre las tablas

    >>Como puedo agregar datos que tengo en la tabla Colonia con un  DropDownlist

    En el Action Add() no veo que definas ningun dato de lista de colonias, podrias usar el ViewBag para ayudarte

    Populate (Bind) DropDownList from ViewBag in ASP.Net MVC

    analiza del ejemplo el Index() ese seria igual a tu Add() alli define el ViewBag.Fruits con la lista de frutas que recupera de la db

    bueno tu deberias hacer lo mismo pero con la lista de Colonias

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta mmarquez04 domingo, 19 de abril de 2020 2:16
    sábado, 18 de abril de 2020 4:47

Todas las respuestas

  • Hola mmarquez04

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, vamos a darte seguimiento e investigaremos para buscar la mejor respuesta para ti.

     

    Gracias por usar los foros de MSDN.

     

    Luis Diego Mora

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    sábado, 18 de abril de 2020 0:09
    Moderador
  • Gracias... La verdad le he estado buscando la solución, pero no he podido resolverlo, por lo que termine dejandolo hasta donde me funciona el codigo.. 
    sábado, 18 de abril de 2020 1:18
  • hola

    Porque defines los campos id_colonia, colonia en la tabla de Ciudadano? el id esta bien porque se relaciona con la Colonia, pero para que el otro campo, ese esta de mas, si necesitas la descripcion puedes hacer un JOIN entre las tablas

    >>Como puedo agregar datos que tengo en la tabla Colonia con un  DropDownlist

    En el Action Add() no veo que definas ningun dato de lista de colonias, podrias usar el ViewBag para ayudarte

    Populate (Bind) DropDownList from ViewBag in ASP.Net MVC

    analiza del ejemplo el Index() ese seria igual a tu Add() alli define el ViewBag.Fruits con la lista de frutas que recupera de la db

    bueno tu deberias hacer lo mismo pero con la lista de Colonias

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta mmarquez04 domingo, 19 de abril de 2020 2:16
    sábado, 18 de abril de 2020 4:47
  • Gracias Master.. Funciono!

    Como siempre tus aportaciones son de mucha ayuda!

    Saludos!

    domingo, 19 de abril de 2020 2:17