none
Vistas Parcial RRS feed

  • Pregunta

  • Hola buenos dias, nuevamente necesito de su gentil ayuda

    Mi problema es el siguiente;

    Tengo una tabla Clientes y otra ClientesType, donde en clientestype almacenop el tipo de cliente y lo relaciono con Clientes

    En la vista de Creacion de clientes agregue un Link para llamar a una vista parcial de clientesType para agregar nuevos tipos,

    la vista carga bien, pero mi problema es que al hacer click en el boton EnviarDatos quiero que guarde los datos y me cierre la Vista Parcial.

    El boton esta en la Vista. 


    viernes, 28 de febrero de 2020 13:30

Todas las respuestas


  • la vista carga bien, pero mi problema es que al hacer click en el boton EnviarDatos quiero que guarde los datos y me cierre la Vista Parcial.

    El boton esta en la Vista. 


    hola Puedes exponer el codigo de la vista de Clientes? dices que tienes un boton EnviarDatos en que momento abre la vista de clienteTipo?
    viernes, 28 de febrero de 2020 15:58
  • En el combo donde detallo los tipos de clientes le cambie la descripción por un ActionLink y al presionar el action a través Ajax cargo la Vista Parcial.

    <div class="col-md-6 col-lg-4 mb-4">
                <div class="md-form md-outline form-lg">
                    <span class="glyphicon glyphicon-share"></span>
                    <a href="javascript:void(0);" class="anchorDetail" data-id="0">Tipo/cliente (Click Nuevo)</a>
                    @Html.DropDownList("ClienteTypeId", null, htmlAttributes: new { @class = "form-control" })
                    @Html.ValidationMessageFor(model => model.ClienteTypeId, "", new { @class = "text-danger" })
                </div>
            </div>
    
     en esta parte de la vista muesto los los tipos de clientes
    
    <div id='myModal' class='modal'>
        <div class="modal-dialog">
            <div class="modal-content">
                <div id='myModalContent'></div>
            </div>
        </div>
    
    </div>
    
    al final es div para el modal
    
    
     <script script type="text/javascript">
               $(function () {
                $(".anchorDetail").click(function () {
                    debugger;
                    var $buttonClicked = $(this);
                    var id = $buttonClicked.attr('data-id');
    
                    var options = { "backdrop": "static", keyboard: true };
                    $.ajax({
                        type: "GET",
                        url: '@Url.Action("Create", "ClientesType")',
                        contentType: "application/json; charset=utf-8",
                        data: { "Id": id },
                        datatype: "json",
                        success: function (data) {
                            debugger;
                            $('#myModalContent').html(data);
                            $('#myModal').modal(options);
                            $('#myModal').modal('show');
    
                        },
                        error: function () {
                            alert("Dynamic content load failed.");
                        }
                    });
                });
    
                   $("#closbtn").click(function () {alert("Cerrado"); $('#myModal').modal('hide'); });
                 
               });
    
            //btn-sendFor
        </script>
    
    el script para cargar la parcial

    esta es la Prtial View

    @model InventFactuSys.Models.ClientesType

    @using (Html.BeginForm("_ClientestypeEdit", "ClientesType", FormMethod.Post, htmlAttributes: new { id = "car-form" }))
    {
        @Html.AntiForgeryToken()
        <div class="modal-header">
            <h2 style="color:lightslategrey"><span class="glyphicon glyphicon-tasks"></span>Tipos de Clientes</h2>
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
                <span class="glyphicon glyphicon-eye-close"></span> Cerrar Sin Guardar
            </button>
            <h4 class="modal-title" id="myModalLabel">Edicion de los DAtos</h4>
        </div>
        <div class="form-horizontal">
            <div class="container">
                <div class="col-md-6 col-lg-4 mb-4">
                    <div class="md-form md-outline form-lg">
                        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
                        <div class="form-group">
                            @Html.LabelFor(model => model.ClienteTypeDesc, htmlAttributes: new { @class = "control-label" })
                            <div class="col-md-10">
                                @Html.EditorFor(model => model.ClienteTypeDesc, new { htmlAttributes = new { @class = "form-control" } })
                                @Html.ValidationMessageFor(model => model.ClienteTypeDesc, "", new { @class = "text-danger" })
                            </div>
                            <div class="form-group">
                                <div class="col-md-offset-2 col-md-10">
                                    <button id="btn-sendForm" class="btn btn-primary" type="submit"><span class="glyphicon glyphicon-saved"></span>Actualizar Datos</button>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    }

     y aquí mando a guardar los datos a la base de datos

    @section Scripts {
        @Scripts.Render("~/bundles/jqueryval")
        <script>
            $('#btn-sendForm').click(function () {
                var formContainer = $('#car-form');
                $.ajax({
                    url: '@Url.Action("_ClientestypeEdit", "ClientesType")',
                    type: 'POST',
                    cache: false,
                    data: formContainer.serialize(),
                    success: function (result) {
                        alert("Estado: Enviado con éxito");
                        if (result)
                            alert("Estado: Enviado con éxito");
                        else
                            alert("Estado: Enviado con error. Compruebe que ha rellenado todos los campos");
                    },
                    error: function (jqXHR, textStatus, error) {
                        alert("Estado: Error inesperado");
                    }
                });
            });

        </script>
    }

    y en el controlador 

    [HttpPost]
      [ValidateAntiForgeryToken]
      public ActionResult _ClientestypeEdit([Bind(Include = "ClienteTypeId,ClienteTypeDesc")] ClientesType car)
      {
       if (ModelState.IsValid)
       {
        db.ClientesTypes.Add(car);
        db.SaveChanges();
       }
       return RedirectToAction("Create", "Clientes");
      }

    ok, me explico

    La vista carga bien

    Al presionar el Boton ,Actualizar Datos de partial view los datos de guardan en la base de datos, e invoco a la vista de edición de los clientes,.

    la pregunta es si hay alguna forma de cerrar la vista parcial desde el script donde mando a guardar los datos para no volver a cargar la vista de clientes y asi actualizar los datos del combo TipoClientes 

    viernes, 28 de febrero de 2020 19:05
  • viernes, 28 de febrero de 2020 19:13
  • para cerra una modal con script :     $("#NomVentanaModal").modal("hide);
    sábado, 29 de febrero de 2020 5:28