none
Ayuda con paso de parametros despues de realizar busqueda. RRS feed

  • Pregunta

  • bien amigos recurro a ustedes debido a que no he podido pasar parametros a mi actionresult tengo lo siguiente :

    1.- vista  index con el siguiente codigo

    @model WebDBT.Models.SearchOferta
    <div class="panel panel-default" id="searchConditionsPanel">
        <div class="panel-body mysearchpanel">
            @using (Ajax.BeginForm("Index", "Ofertas", FormMethod.Post, new AjaxOptions { OnSuccess = "loadCust", LoadingElementId = "waitimage" }))
            {
                @Html.HiddenFor(model => model.MtoProcedimientoId, new { @id = "MtoProcedimientoId" });            
    
                <div class="row">
                    <div class="col-md-3">
    
                        <label class="control-label" for="Procedimiento">Procedimiento</label>
                        <div class="controls">
                            @Html.TextBoxFor(m => m.NoLicitacion, htmlAttributes: new { @id = "NoLicitacion", @class = "form-control" })
                        </div>
    
                    </div>
    
                    <div class="col-md-3">
                        <label class="control-label" for="Licitante">Licitante</label>
                        <div class="controls">
                            <select id="MtoProveedorId" name="MtoProveedorId" class="form-control"></select>
                        </div>
                    </div>
    
                    <div class="col-md-2">
                        <label class="control-label">&nbsp;</label>
                        <div class="controls">
                            <input type="submit" 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; top:30px;">
                        </div>
                    </div>
                   
    
                    <div class="col-md-2">
                        <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><a href='@Url.Action("Export", "Ofertas", new { MtoProcedimientoId = Model.MtoProcedimientoId, MtoProveedorId = Model.MtoProveedorId })' title="Editar Información"><i class="glyphicon glyphicon-edit"></i>Excel</a></li>
                                <li><a href="#" id="BtnImprimir"><span class="glyphicon glyphicon-trash"></span>Imprimiriririr</a></li>      
                                <li><a href='@Url.Action("Excel", "ExportXls", new { ProcId= @Model.SearchResult.FirstOrDefault().MtoProcedimientoId , ProvId=Model.MtoProveedorId })' title="Imprimir para Validar"><i class="glyphicon glyphicon-edit"></i>Formato Impresión</a></li>
                                <li>@Html.ActionLink("xls", "ExportXls", new { MtoProcedimientoId = @Model.MtoProcedimientoId, MtoProveedorId = @Model.MtoProveedorId }, new { @class = "btn btn-primary" })</li>
                                
                            </ul>
    
                        </div>
    
                        @Html.ActionLink("Ofertas","ShowResult",new { },new {@class="btn btn-primary",target="_blank" })
                        @Html.ActionLink("xls", "ExportXls", new {MtoprocedimientoId= Model.MtoProcedimientoId,MtoproveedorId=Model.MtoProveedorId }, new { @class = "btn btn-primary"})
                    </div>
                  
    
                </div>
            }
        </div>
    
        <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) {
                $("#ajax_main").html(result);
            }
        </script>
    }
    

    En el action result  de index.

      public ActionResult Index(SearchOferta model)
            {
               
                var pageIndex = model.Page ?? 1;
    
                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()                          
                              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
                              }).OrderBy(o => o.Licitante).ThenBy(o => o.Gpo).ToList();
    
    
    
                if (model.MtoProcedimientoId != 0)
                {
                    Result = Result
                       .Where(l => l.MtoProcedimientoId == (int)model.MtoProcedimientoId)
                       .ToList();
                }
    
    
    
    
                if (model.MtoProveedorId != 0)
                {
                    Result = Result
                       .Where(l => l.MtoProveedorId == (int)model.MtoProveedorId)
                       .ToList();
                }
              
                model.SearchResult = Result.ToPagedList(pageIndex, 2);
                
                if (Request.IsAjaxRequest())
                {
                    return PartialView("_loadOfertas", model);
                }
                else
                {
                    return View(model);
                }
    
            }

    y una vista parcial que carga el resultado de la busqueda.

    @model WebDBT.Models.SearchOferta
    @using PagedList;
    @using PagedList.Mvc;
    
    <table id="myTable" class="table-bordered">
        <thead>
            <tr>
                <th>Marcas</th>            
                <th class="col-md-1">Licitante</th>            
                <th>Partida</th>
                <th class="col-md-1">Clave</th>
                <th>Descripción</th>
                <th>Precio Ofertado</th>
                <th>Descuento</th>
                <th>Cantidad Máxima</th>
                <th>Cantidad Minima</th>
                <th>Acción</th>
            </tr>
        </thead>
        <tbody>
    
            @foreach (var item in Model.SearchResult)
            {
                <tr id="@item.MtoOfertaId">
                    <td><img class="expand" src="@Url.Content("~/Content/images/plus.png")" orderid="@item.MtoOfertaId" /></td>                
                    <td class="col-sm-3">@item.Licitante</td>                
                    <td>@item.Partida</td>
                    <td>@item.Gpo  @item.Gen @item.Esp @item.Dif @item.Var</td>
                    <td>@item.Descripcion</td>
                    <td>@item.PrecioOfertado.ToString("C") </td>
                    <td>@item.Descuento.ToString("N") </td>
                    <td>@item.Maximo.ToString("N0")</td>
                    <td>@item.Minimo.ToString("N0") </td>
                    <td>
                        @if (User.IsInRole("Admin") || User.IsInRole("SuperAdmin"))
                        {
                            <div class="dropdown">
                                <button class="btn btn-success 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="DeleteOferta(id=@item.MtoOfertaId)"><span class="glyphicon glyphicon-trash"></span>Eliminar</a></li>                                
    
                                </ul>
                            </div>
                        }
                </td>
            </tr>
                <tr id="fila-@item.MtoOfertaId" style="display:none">
                    <td></td>
                    <td colspan="11">@Html.Action("GetDetalleOferta", new { id = @item.MtoOfertaId })</td>
                </tr>
            }
        </tbody>
    </table>
    <div id="paginador">
    
        @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 class="modal fade" id="DeleteConfirmation">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header modal-header-danger">
                    <a href="#" class="close" data-dismiss="modal">&times;</a>
                    <h3 class="modal-title"><i class="fa  fa-trash"></i>&nbsp;Eliminar Propuesta Técnico-Económica</h3>                
                </div>
                <div class="modal-body">
                    <h4>¿Estas Seguro de Eliminar la propuesta del Licitante Seleccionado</h4>                
                    <h3><input type="hidden" id="DeleteOferta" name="DeleteOferta"></h3>                    
                </div>
                <div class="modal-footer">
                    <a href="#" class="btn btn-primary" data-dismiss="modal" id="r">Cancelar</a>
                    <a href="#" class="btn btn-danger" onclick="ConfirmDelete()">Confirmar</a>
                </div>
            </div>
        </div>
    </div>
    
    @section Scripts {
        @Scripts.Render("~/bundles/jqueryval")
        @*@Scripts.Render("~/bundles/bootstrap")*@
        @Scripts.Render("~/bundles/WEBDBT")
        @Scripts.Render("~/Scripts/WebScript/Apertura.js")
    }
    

    ahora despues de mostrar el resultado en el boton de xls quiero pasarle los parametros de  MtoProcedimientoId y MtoProveedorId

    @Html.ActionLink("xls", "ExportXls", new {MtoprocedimientoId= Model.MtoProcedimientoId,MtoproveedorId=Model.MtoProveedorId }, new { @class = "btn btn-primary"})

    para que la  action result los recida

     public ActionResult ExportXls(int? MtoProcedimientoId, int? MtoProveedorId)
            {
    
                var reporte = this.GenerateReport();
                var stream = reporte.ExportToStream(CrystalDecisions.Shared.ExportFormatType.Excel);
    
                return File(stream, "application/xls","Ofertas.xls");
            }

    pero al presionar el bonto no me es posible pasara esas 2 variables, alguien podria echarme una mano.

    gracias y saludos.



    Horacio Xochitemol Bautista

    miércoles, 21 de febrero de 2018 20:35

Todas las respuestas

  • hola

    Porque en la vista parcial defines una seccion de

    @section Scripts {

    eso no es necesario, se supone que la vista parcial se usa dentro de una view, la cual si defines los script que usaria

    Validaste que no sea un tema de key sensitive, ya que noto que defines MtoprocedimientoId pero despues el parametro es MtoProcedimientoId tiene la P en mayusculas

    entiendo que al presionar el link ingresa a ExportXls, porque sino ingresa valida que funcione con GET

    slaudos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 21 de febrero de 2018 21:09
  • que tal leandro como siempre muchas gracias ya valida por get y si me tra el resultado de hecho si al metodo lo ejecuto sin parametros se ejecuta,  pero al querer pasarle parametros estos no llegan al controlador.

    en color naranja pongo el link que me abriri si pongo el mouse encima del boton de xls.

    el MtoProcedimientoId lo guardar en un hiddenform y el MtoProcedimientoId lo deberia tomar del combobox.


    Horacio Xochitemol Bautista

    miércoles, 21 de febrero de 2018 22:38
  • que tal amigo les cometo que actualice mi código de la siguiente manera:

    <li><a href="#" onclick="BtnImprimir();"><span class="glyphicon glyphicon-trash"></span>Imprimir Ajax</a></li>                                

    ahora hice una función 

    function BtnImprimir() {
    
        var MtoProcedimientoId = $("#MtoProcedimientoId").val();
        var MtoProveedorId = $("#MtoProveedorId").val(); //$("#MtoRequerimientoId").val(),
    
        $.ajax({
            type: "POST",
            url: _urlBase + "Ofertas/ExportXls/",
            contenType: 'application/json;',
            data: { MtoProcedimientoId: $('#MtoProcedimientoId').val(), MtoProveedorId: $('#MtoProveedorId').val() },
            datatype: 'html',
            success: function (result) {
                window.open('@Url.Action("Ofertas", "ExportXls")', 'mywindow', 'fullscreen=yes, scrollbars=auto');;
            },
            error: function (xhr, status) {
                $("#myModal").modal('show');
                $('#myModalContent').html(result);
                bindForm();
            }
        });
    
    }

    ahí si pasa los parametros de MtoProcedimientoId y MtoProveedorI; sin embargo ahora no se como mostrar el reporte despues del resultado $ajax, podrían echarme una mano por favor es lo ultimo que me falta para terminar ese modulo


    Horacio Xochitemol Bautista

    jueves, 22 de febrero de 2018 20:04