visa tarjeta seguros nativa nacion mastercard ingrese identificacion home banco autoservicio c#-4.0 export-to-excel

c# 4.0 - tarjeta - Deseo enviar salida de consulta nativa de forma gratuita a Excel utilizando un WebGrid



tarjeta mastercard banco nacion (2)

Primero necesito explicar mi problema, tengo una aplicación de consulta nativa donde alguien escribe "Seleccione ... esto y aquello" y la salida se muestra actualmente en una cuadrícula que está paginada y se me ha pedido que agregue un botón que exportará los datos a Excel directamente desde un flujo de datos sin tipo. mi código actual que he encontrado usa una grilla y todavía no me indica que descargue un archivo .xls por alguna razón.

[Authorize(Roles = "Portal administrator")] public void ExportExcel(NativeQueryVM model, int? page, string sort) { List<Dictionary<string, object>> result = null; String vartimedate = DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss"); try { var user = Membership.GetUser(); var grid = new System.Web.UI.WebControls.GridView(); if (page == null && sort == null) { if (model.QueryText.ToUpper().StartsWith("SELECT")) { UserQueryInput queryinput = new UserQueryInput(); queryinput.DatabaseId = model.selectedDatabase; queryinput.QueryText = model.QueryText; result = lookupProvider.GetSetNativeQuery((Guid)user.ProviderUserKey, user.UserName, queryinput, "Set"); model.QueryResultData = result; ViewBag.SubmitType = "Select"; CreateDynamicResult(model.QueryResultData); if (model == null || model.QueryResultData.Count == 0) { ViewBag.ResultMessage = "No Results Found"; } else { WebGrid wd = new WebGrid(source: ViewBag.DynamicResult, canPage: false, canSort: false ); string griddata = wd.GetHtml().ToString(); string attachment = "attachment; filename=NativeQuery" + vartimedate + ".xls"; Response.ClearContent(); Response.AddHeader("content-disposition", attachment); Response.ContentType = "application/excel"; StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); Response.Write(griddata); Response.End(); } } } else { //This part should come when page or sort is not null for Select. Should not be executed other than SELECT result = lookupProvider.GetSetNativeQuery((Guid)user.ProviderUserKey, user.UserName, null, "Get"); model.QueryResultData = result; ViewBag.SubmitType = "Select"; CreateDynamicResult(model.QueryResultData); if (model == null || model.QueryResultData.Count == 0) { ViewBag.ResultMessage = "No Results Found"; } else { } } } catch (Exception ex) { logger.Log(new LogMessage() .ForMethod("SubmitQuery") .WithContext(Environment.MachineName) .WithException(ex) .WithDescription("An error occurred while submiting query to get result")); } }


¿Cómo llamas a esta función vacía? Las rutas de retorno incluyen establecer una propiedad ViewBag con un mensaje de error junto con la modificación de la respuesta. Huele a mal diseño.

@Url.Action un hipervínculo que enlaza con una @Url.Action para algo como esto. Tenga en cuenta que deberá devolver un FileContentResult con los datos codificados en UTF8 en lugar de modificar la Response directamente:

public async Task<ActionResult> Test() { WebGrid wd = new WebGrid(source: ViewBag.DynamicResult, canPage: false, canSort: false ); string griddata = wd.GetHtml().ToString(); string attachment = "attachment; filename=NativeQuery" + vartimedate + ".xls"; Response.ClearContent(); Response.AddHeader("content-disposition", attachment); Response.ContentType = "application/excel"; byte[] buffer = System.Text.UTF8Encoding.UTF8.GetBytes(griddata); return File(buffer, "application/octet-stream"); }


Hola, todos respondieron a este problema, y ​​encontré la respuesta y los problemas residen fuera del código que ingresé en la pregunta. Jquery estaba interceptando la salida de mi secuencia de archivos y, por otro lado, si el botón se creó con runat = server, el modelo está fuera de alcance y la parte principal de la solución consistía en guardar el modelo en una sesión y volver a colocarlo.

Gracias por su ayuda, todo ...