jueves, 29 de enero de 2015

Exportar a Excel desde una aplicacion MVC 4

El snippet que posteo a continuación permite exportar una consulta a Excel en un proyecto MVC. En particular donde uso este código es en un proyecto MVC 4.

Para quien sea nuevo en MVC. Este código debe ir en la carpeta Controller. En un archivo con nombre AlgoController.cs. En mi caso ContactoController.cs.

Los namespaces que se deben agregar son:


using System.Text.RegularExpressions;
using System.Web.UI.WebControls;
using System.Web.UI;



En la vista pongo un Javascript / Jquery como esto (Referencia: View/Reporte/Area.cshtml):
El código Javascript / Jquery  se ejecuta al presionar un botón con identificador btnExcel:
 Al momento de llenar el datasource del Gridview te puedes encontrolar con el siguiente error:

Data binding directly to a store query (DbSet, DbQuery, DbSqlQuery) is not supported. Instead populate a DbSet with data, for example by calling Load on the DbSet, and then bind to local data. For WPF bind to DbSet.Local. For WinForms bind to DbSet.Local.ToBindingList().

Lo anterior ocurre cuando se trata de asociar el resultado de la consulta directamente al DataSource.Lo que se debe hacer es pasar el resultado a una coleccion. Ejemplo: resultado.ToList().

Fuente:
StackOverFlow

sábado, 3 de enero de 2015

Como mostrar el dialogo de abrir archivo en Swift

Me estoy iniciando con Swift. Pero a diferencia de muchos, comencé con una aplicación de escritorio.

La aplicación se trata de una interfaz gráfica para el programa xsltproc, la idea es que el usuario elige los archivos (xml y xsl) y se los pasa como parámetro. Hacer eso en la linea de comandos es una locura si los archivos no están en la misma carpeta.

Entonces como soy nuevo en Swift no sabia como abrir el dialogo de abrir archivo (OpenFile Dialog), y pensé que muchos interesados en este nuevo lenguaje estarían pasando por la misma.


@IBAction func actOpenFileDialog(sender: AnyObject) {
var dlgFileName : NSOpenPanel = NSOpenPanel()

dlgFileName.title = "Seleccione archivo XML"
dlgFileName.allowsMultipleSelection = false
dlgFileName.allowedFileTypes = ["xml"]
dlgFileName.runModal()

var vFileName = dlgFileName.URL
var strFileName = vFileName?.absoluteString!
if (strFileName != nil){
//Asigno la ruta completa al TextField
txtFileName.stringValue = strFileName!
}
}


Lo que hace el código es lanzar el dialogo de abrir archivo.
Limita al usuario a seleccionar un solo archivo, el archivo solo puede ser con extensión xml. Y el nombre del archivo seleccionado es mostrado en un control TextField.

El resultado en la captura a continuación: