none
ayuda con return del metodo editar RRS feed

  • Pregunta

  • que tal amigos les comento lo siguiente.

    1.- tengo un método buscar en el actionResult con el siguiente codigo

     public ActionResult Index(SearchOferta view)
            {
                #region Index Search
                var pageIndex = view.Page ?? 1;
                var itemPorPagina = 30;
                ViewBag.pageno = pageIndex;
                ViewBag.itemperpage = itemPorPagina;
    
                var Result = (from MO in db.MtoOfertas
                              join MR in db.MtoRequerimientos on MO.MtoRequerimientoId equals MR.MtoRequerimientoId into group1
                              from g1 in group1.DefaultIfEmpty()
                              join MP in db.MtoProveedores on MO.MtoProveedorId equals MP.MtoProveedorId into group2
                              from g2 in group2.DefaultIfEmpty()
                              where (MO.MtoProcedimientoId == view.MtoProcedimientoId)
                              select new ResultadoOfertas
                              {
                                  MtoProcedimientoId = MO.MtoProcedimientoId,
                                  MtoProveedorId = MO.MtoProveedorId,
                                  MtoOfertaId = MO.MtoOfertaId,
                                  Partida = g1.Partida,
                                  Clave = MO.Gpo + " " + MO.Gen + "" + MO.Esp + "" + MO.Dif + " " + MO.Var,
                                  Gpo = MO.Gpo,
                                  Gen = MO.Gen,
                                  Esp = MO.Esp,
                                  Dif = MO.Dif,
                                  Var = MO.Var,
                                  Descripcion = g1.Descripcion,
                                  Licitante = g2.RazonSocial,
                                  PrecioOfertado = MO.PrecioOfertado,
                                  Descuento = MO.Descuento,
                                  Maximo = MO.MaximoOfertado,
                                  Minimo = MO.MinimoOfertado,
                                  MontoPartida= MO.MontoPartida,
                                  statusProcedimimiento = MO.MtoProcedimiento.MtoEstadoId,
                              }).OrderBy(o => o.Licitante).ThenBy(o => o.Gpo).ToList();
    
               
    
                if (view.MtoProveedorId != 0)
                {
                    Result = Result
                       .Where(l => l.MtoProveedorId == (int)view.MtoProveedorId)
                       .ToList();
                }
    
                view.MtoProcedimientoId = view.MtoProcedimientoId;
                view.MtoProveedorId = view.MtoProveedorId;
                view.SearchResult = Result.OrderBy(r => r.Licitante)
                                          .ThenBy(r => r.Gpo)
                                          .ThenBy(r => r.Gen)
                                          .ThenBy(r => r.Esp)
                                          .ThenBy(r => r.Dif)
                                          .ThenBy(r => r.Var).ToPagedList(pageIndex, itemPorPagina);
    
                ViewData["MtoProcedimientoId"] = view.MtoProcedimientoId;
                ViewData["MtoProveedorId"] = view.MtoProveedorId;
    
                if (Request.IsAjaxRequest())
                {
                    return PartialView("_loadOfertas", view);
                }
                else
                {
                    return View(view);
                }
    
                #endregion
    
            }

    hasta aquí todo  bien el código de la view del metodo index es el siguiente.

    @model WebDBT.Models.SearchOferta
    
    
    <div class="box box-body box-primary">
    
        @using (Ajax.BeginForm("Index", "Ofertas", FormMethod.Post,
            new AjaxOptions
            {
                OnSuccess = "loadCust",            
                OnBegin = "openLoad",      
    
            }))
        {
            <div class="form-input">
                @Html.HiddenFor(model => model.MtoProcedimientoId, new { @id = "MtoProcedimientoId" })
                @Html.AntiForgeryToken()
                @Html.ValidationSummary("", new { @class = "text-error" })
    
                <div class="row">
                    <div class="col-md-3">
                        <label class="control-label">Procedimiento</label>
                        <div class="inputWithIcon">
                            @Html.TextBoxFor(m => m.NoLicitacion, htmlAttributes: new { @id = "NoLicitacion" })
                        </div>
    
                    </div>
    
                    <div class="col-md-3">
                        <label class="control-label">Licitante</label>
                        <div class="controls">
                            <select id="MtoProveedorId" name="MtoProveedorId"></select>
                        </div>
                    </div>
    
                    <div class="col-md-2">
                        <label class="control-label">&nbsp;</label>
                        <div class="controls">
                            <input type="submit" id="BtnSearch" value="Buscar..." class="btn btn-success">
                        </div>
                    </div>
    
                    <div class="col-md-2">
                        <label>&nbsp;</label>
                        <div class="text-center">
                            <img id="waitimage" src="~/Content/Images/loading2.gif" style="display:none;  width:40px; height:40px; text-align:left; ">
                        </div>
                    </div>
    
    
                    <div class="col-md-2">
                        <div class="btn-group pull-right">
    
                        </div>
                    </div>
    
    
                </div>
            </div>
        }
    
    
        @*=================================================
                DIV PARA EL RESULTADO DE LA BUSQUEDA
        =================================================*@
        <div id="ajax_main">
            @if (Model.SearchResult.Count != 0)
            {
                @Html.Partial("_loadOfertas", @Model)
            }
        </div>
    
    </div>
    
    
    @section scripts{
    
        @Scripts.Render("~/bundles/jqueryval")
        @Scripts.Render("~/Scripts/WebScript/Apertura.js")
    
        <script type="text/javascript">
            function loadCust(result) {
                closeLoad();
                $("#ajax_main").html(result);
            }
        </script>
    }

    ahora bien en la vista parcial tengo el siguiente  código

    @model WebDBT.Models.SearchOferta
    @using PagedList;
    @using PagedList.Mvc;
    
    <div class="table-title">
        <h3>lista de Procedimientos con criterios proporcionados</h3>   
    
            <table id="myTable" class="table-fill">
                <thead>
                    <tr>
                        <th>No.</th>
                        <th>Marcas</th>
                        <th class="col-md-2">Licitante</th>
                        <th>Partida<br />Clave</th>
                        <th>Precio <br />Ofertado</th>
                        <th>Descuento<br />Ofertado</th>
                        <th>Cantidad <br />Máxima</th>
                        <th>Cantidad <br />Minima</th>
                        <th>Monto <br />Partida</th>
                        <th></th>
                    </tr>
                </thead>
                <tbody>
                    @{
                        int pageno = (int)ViewBag.pageno;
                        int itemperpage = (int)ViewBag.itemperpage;
                        int currentno = ((pageno - 1) * itemperpage) + 1;
                    }
                    @if (Model.SearchResult.Count > 0)
                    {
                        foreach (var item in Model.SearchResult)
                        {
    
                            <tr id="@item.MtoOfertaId">
                                <td class="text-center">  @(currentno++)</td>
                                <td class="text-center"><img class="expand" style="cursor:pointer" src="@Url.Content("~/Content/images/plus.png")" orderid="@item.MtoOfertaId" /></td>
                                <td>@item.Licitante</td>
                                <td class="text-justify"><strong>Partida: @item.Partida Clave: @item.Gpo @item.Gen  @item.Esp  @item.Var </strong>  @item.Descripcion</td>
                                <td class="text-right">@item.PrecioOfertado.ToString("C") </td>
                                <td class="text-right">@item.Descuento.ToString("N") </td>
                                <td class="text-right">@item.Maximo.ToString("N0")</td>
                                <td class="text-right">@item.Minimo.ToString("N0") </td>
                                <td class="text-right">@item.MontoPartida.ToString("C") </td>
                                <td>
                                    @if (((User.IsInRole("Admin") || User.IsInRole("SuperAdmin")) &&
                Model.SearchResult.FirstOrDefault().statusProcedimimiento == 1))
                                    {
                                        <div class="dropdown">
                                            <button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">
                                                <span class="fa fa-cog">&nbsp;</span><span class="caret"></span>
                                            </button>
                                            <ul class="dropdown-menu pull-right" aria-labelledby="dropdownMenu1">
                                                <li><a href='@Url.Action("Edit", "Ofertas", new { @id = @item.MtoOfertaId })' title="Editar Información"><i class="glyphicon glyphicon-edit"></i>Editar</a></li>
                                                <li><a href="#" onclick="sweetDelete(id=@item.MtoOfertaId)"><span class="glyphicon glyphicon-trash"></span>Eliminar</a></li>
    
                                            </ul>
                                        </div>
                                    }
                                    else
                                    {
                                        <span><label>Cerrado</label></span>
                                    }
                                </td>
                            </tr>
                            <tr id="fila-@item.MtoOfertaId" style="display:none">
                                <td></td>
                                <td colspan="11">@Html.Action("GetDetalleOferta", new { id = @item.MtoOfertaId })</td>
                            </tr>
                        }
    
                    }
                    else
                    {
                        <tr>
                            <td colspan="10"><h5 class="text-bold">No Existen Registro con el procedimiento seleccionado</h5></td>
                        </tr>
                    }
                </tbody>
            </table>
            <div class="row" style="padding-">
                <div class="text-right">
                    <div class="col-md-2">
                        @if (User.IsInRole("Admin") || User.IsInRole("SuperAdmin"))
                        {
                            <div class="btn-group pull-right">
                                <label class="control-label">&nbsp;</label>
                                <button type="button" class="btn btn-block btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                                    Imprimir / Exportar
                                    <span class="fa fa-print"></span>
                                </button>
                                <ul class="dropdown-menu pull-right">
                                    <li>@Html.ActionLink(" PDF Validar", "ExportPDF", new { MtoProcedimientoId = Model.MtoProcedimientoId, MtoProveedorId = Model.MtoProveedorId }, new { @class = "fa  fa-file-pdf-o", @style = "color:red", target = "_blank" })</li>
    
                                    <li>@Html.ActionLink(" Excel", "ExportXls", new { MtoProcedimientoId = Model.MtoProcedimientoId, MtoProveedorId = Model.MtoProveedorId }, new { @class = "fa fa-file-excel-o", @style = "color:green" })</li>
    
                                </ul>
                            </div>
                        }
                    </div>
                    <div class="col-md-10">
                        Pagina @(Model.SearchResult.PageCount < Model.SearchResult.PageCount ? 0 : Model.SearchResult.PageNumber) de @Model.SearchResult.PageCount
                        @Html.PagedListPager(Model.SearchResult, Page => Url.Action("Index", new RouteValueDictionary {
                        {"Page",Page},
                        {"MtoProcedimientoId",Model.MtoProcedimientoId},
                        {"MtoProveedorId",Model.MtoProveedorId}}), PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing(new AjaxOptions { UpdateTargetId = "ajax_main" }))
                    </div>
    
                </div>
            </div>
        
    </div>
    

    en boton de editar me manda a la siguiente accion

    [HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult Edit(NewOfertaView view)
            {
                var user = db.MtoUsuarios.Where(u => u.UserName == User.Identity.Name).FirstOrDefault();
                if (user == null)
                {
                    RedirectToAction("Index", "Home");
                }
    
                if ((view.MtoOfertaId != 0) && view.DetalleOfertasTemp != null)
                {
                    var response = DBOferta.EditNewOferta(view, User.Identity.Name);
                    if (response.succeeded)
                    {
    
    
                        ViewBag.MtoProcedimientoId = new SelectList(ComboHelper.GetProcedimientos(user.MtoCompaniaId, 1)
                        .Where(l => l.MtoEstadoId == 1), "MtoProcedimientoId", "NoLicitacion", view.MtoProcedimientoId);
    
                        ViewBag.MtoProveedorId = new SelectList(ComboHelper.GetProveedores(0)
                        .OrderBy(P => P.RazonSocial), "MtoProveedorId", "RazonSocial", view.MtoProveedorId);
    
                        ViewBag.MtoRequerimientoId = new SelectList(ComboHelper.GetRequerimiento(view.MtoProcedimientoId), "MtoRequerimientoId", "PartidaClave", view.MtoRequerimientoId);
    
                        var view2 = new NewOfertaView
                        {
                            MtoProcedimientoId = view.MtoProcedimientoId,
                            MtoProveedorId = view.MtoProveedorId,
    
                            DetalleOfertasTemp = db.DetalleOfertasTemp
                            .Where(dot => dot.MtoUsuarioId == user.MtoUsuarioId).ToList(),
                        };
    
                        return Json(new { success = response.succeeded, result = view2 });
    
                    }
                }
    
    
    
                ViewBag.MtoProcedimientoId = new SelectList(db.MtoProcedimientos, "MtoProcedimientoId", "OficioPeticion", view.MtoProcedimientoId);
                ViewBag.MtoProveedorId = new SelectList(db.MtoProveedores, "MtoProveedorId", "RfcProveedor", view.MtoProveedorId);
                ViewBag.MtoRequerimientoId = new SelectList(db.MtoRequerimientos, "MtoRequerimientoId", "Gpo", view.MtoRequerimientoId);
                ViewBag.MtoUsuarioId = new SelectList(db.MtoUsuarios, "MtoUsuarioId", "UserName", view.MtoUsuarioId);
    
                return View(view);
            }


    aqui esta el metodo script para llamar  al metodo edit

     $('#submitEdit').on('click', function (e) {
    
            e.preventDefault();
    
            if (ValEcoTec()) {
    
                var NewOferta = {
                    MtoOfertaId: $("#MtoOfertaId").val(),
                    Partida: $("#MtoRequerimientoId").val(),
                    Gpo: $("#Gpo").val(),
                    Gen: $("#Gen").val(),
                    Esp: $("#Esp").val(),
                    Dif: $("#Dif").val(),
                    Var: $("#Var").val(),
                    PrecioOfertado: $('#PrecioOfertado').val(),
                    Descuento: $('#Descuento').val(),
                    MaximoOfertado: $('#MaximoOfertado').val(),
                    MinimoOfertado: $('#MinimoOfertado').val(),
                    MontoPartida: $('#MontoPartida').val(),
                    MtoProcedimientoId: $('#MtoProcedimientoId').val(),
                    MtoUsuarioId: $('#MtoUsuarioId').val(),
                    MtoRequerimientoId: $('#MtoRequerimientoId').val(),
                    MtoProveedorId: $('#MtoProveedorId').val(),
                    DetalleOfertasTemp: list
                }
    
                $.ajax({
                    type: 'POST',
                    url: _urlBase + "Ofertas/Edit/",
                    contenType: "application/html; charset=utf-8",
                    data: { view: NewOferta, "__RequestVerificationToken": $('input[name=__RequestVerificationToken]').val() },
                    datatype: 'json',
                    beforeSend: function (objeto) {
                        openLoad();
                    },
                    success: function (result) {
                        if (result.success) {
    
                            closeLoad();                        
    
                            swal('Hecho', 'Los Datos proporcionados se guardaron satisfacctoriamente', 'success');
    
                            window.location(_urlBase + 'Ofertas/index/' + $("#MtoOfertaId").val());
    
                            $('#submit').html('Guardar Propuesta');
    
                            //recargo las partidas del procedimiento
                            GetPartidas(NewOferta.MtoProcedimientoId);
    
                            //limpio los campos
                            limpiar(false);
    
                            //limpio el arreglo de marcas
                            list = [];
    
                            //limpio la tabla de marcas
                            $('#tblMarcasTemp tbody').empty();
    
                            //escondo botton de guardado
                            $('#submit').hide();
    
                        }
                        else {
                            var IsValid = false;
                            swal('Oops!', 'ocurrio un error durant el guardado', 'error');
                            $('#submit').html('Guardar Propuesta');
                        }
                    },
                    error: function (xhr, status, error) {
                        alert(xhr.responseText);
                        $('#submit').html('Guardar Propuesta');
                        var IsValid = false;
                    }
                });
    
    
    
            }
        })

    lo que quiero es que despues de editar me regrese al metodo index aplicando el filtro proporcionado incialmente.

    success: function (result) {
                        if (result.success) {
    
                            closeLoad();                        
    
                            swal('Hecho', 'Los Datos proporcionados se guardaron satisfacctoriamente', 'success');
    
                            window.location(_urlBase + 'Ofertas/index/' + aqui como paso el modelView con todos los datos;
    
                            $('#submit').html('Guardar Propuesta');
    
                            //recargo las partidas del procedimiento
                            GetPartidas(NewOferta.MtoProcedimientoId);
    
                            //limpio los campos
                            limpiar(false);
    
                            //limpio el arreglo de marcas
                            list = [];
    
                            //limpio la tabla de marcas
                            $('#tblMarcasTemp tbody').empty();
    
                            //escondo botton de guardado
                            $('#submit').hide();
    
                        }
                        else {
                            var IsValid = false;
                            swal('Oops!', 'ocurrio un error durant el guardado', 'error');
                            $('#submit').html('Guardar Propuesta');
                        }
                    },


    de antemano muchas gracias o podrian darme una idea de como seria mejor


    Horacio Xochitemol Bautista


    • Editado Xochitemol jueves, 1 de noviembre de 2018 4:33 Actualizacion
    jueves, 1 de noviembre de 2018 4:28

Todas las respuestas

  • hola

    Pero en el codigo veo que estas redireccionando cuando defines la linea

    window.location(_urlBase + 'Ofertas/index/' + $("#MtoOfertaId").val());
    

    aunque no entiendo porque pones codigo debajo de esa linea si se supone que de alli la navegacion va a cambiar, o sea porque pones GetPartidas(), limpiar(), etc despues de un window.location, eso no tiene sentido

    si vas a realizar algo lo haces antes de y redireccionas justo al final

    validaste en la Developer Tools (accedes con F12) del browser que no tengas un error de javascript ? la solapa Console quizas muestre un error javascript que este evitando la redireccion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 1 de noviembre de 2018 10:18
  • que tal leandro  gracias por contestar ya hice el cambio en el codigo no me muestra ningun errror la depuración; sin embargo sigo sin poder direccionar al index pasandole el viewmodel.

    gracias


    Horacio Xochitemol Bautista

    viernes, 2 de noviembre de 2018 19:12
  • >>ya hice el cambio en el codigo no me muestra ningun errror la depuración;

    pero que cambio hiciste ? o sea antes si tenias un error

    podrias poner alguna linea como ser

    console.log("mensaje");

    en el javascript para que deje ese mensaje en la consola y ver si pasa por alli la ejecucion


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 2 de noviembre de 2018 19:45
  • que tal leandro como siempre gracias por responder, te comento lo unico que hice fue pasar la linea

    window.location(_urlBase + 'Ofertas/index/' + $("#MtoOfertaId").val());

    después de realizar todas las acciones que debo hacer; ahora no muestra ningún error en consola; pero no me direcciona al index donde recibe el viewmodel

    window.location(_urlBase + 'Ofertas/index/' + viewmode

    de antemano muchas gracias


    Horacio Xochitemol Bautista

    viernes, 2 de noviembre de 2018 19:53
  • que tal amigos les comento, hice algunos cambios en en siguiente codigo.

     window.location.replace(_urlBase + 'Ofertas/index/' + result);

    con esto me regresa a la view de index pero no respeta el filtro que se puso,  alguna idea de como pasara el viewmodel, muchas gracias.


    Horacio Xochitemol Bautista

    sábado, 3 de noviembre de 2018 13:55