March 2009 - Artículos

Exportar Crystal Report Document ASP.NET dentro de un UpdatePanel

Este articulo se desprende de uno anterior.

y por el pedido de CARLOS A. RESÉNDIZ MARTÍNEZ (que tiene su blog Raptor-NET) y sus recordatorios :)…
Nota: me estoy dando cuenta que tiene un enlace a mi blog así que voy a tener que hacer buena letra y lo invito a que siga posteando en su blog Raptor-NET

 

En el articulo anterior quise mostrar como exportar, aquí vamos a exportar mediante ExportToHTTPResponse y directamente en el objeto Response con un MemoryStream
Este articulo viene con ejemplo para la descarga al final.

 

Exportando dentro de un UpdatePanel

Cuando queremos exportar dentro de un UpdatePanel nos envía el siguiente mensaje por tratar de escribir en el Response, que escribe o intenta escribir fuera del contenedor del UpdatePanel
Mensaje:

Line: 4723
Error: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.
Details: Error parsing near '%PDF-1.2 %�� 1 0 ob'.

La imagen en mi IE8 de Windows 7:

image

 

 

Exportando

Ejemplo 1: con el metodo ExportToHTTPResponse

Aquí obtenemos el reporte y lo exportamos a la salida HTTP, sin necesidad de armar el content-type… damos el tipo de formato de exportación y listo. Como segundo parámetro recibe el objeto Response

protected void btnExportarPDF_Click(object sender, EventArgs e)
   {
       ReportDocument reporteDoc = ReporteCrear();
       reporteDoc.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, "EjemploExportacion");
   }

 

Ejemplo 2: armando la salida HTTP, utilizando ExportToStream

Aqui hacemos al viejo estilo de exportación, tomando el control del Reponse mediante un MemoryStream donde se encuentra el reporte
Con este MemoryStream también lo podemos enviar por email: String to Stream: para enviarlo como Attachment (tal vez otro post sobre un ejemplo de esto exclusivamente con Crystal Report)

El codigo para armar:

protected void btnExportarPDFv2_Click(object sender, EventArgs e)
   {
       //Cargar reporte. Enlazando a la fuente de datos.
       ReportDocument reporteDoc = ReporteCrear();

       System.IO.Stream streamPDF;
       streamPDF = reporteDoc.ExportToStream(ExportFormatType.PortableDocFormat);

       System.IO.MemoryStream stream = (System.IO.MemoryStream)reporteDoc.ExportToStream(ExportFormatType.PortableDocFormat);

       Response.Buffer = false;
       Response.Clear();

       Response.AddHeader("content-disposition", "attachment;filename=EjemploExportacion.pdf");
       Response.ContentType = "application/pdf";

       Response.BinaryWrite(stream.ToArray());

       Response.End();
   }

 

Pero en el UpdatePanel? No funciona. Hay que agregarlo a la coleccion de Triggers

Debemos agregar el botón en la colección de Triggers.
Esto lo debe hacer automáticamente el Update Panel lo de registrar cada control “interno” pero parece que hay un problema.
from MSDN:
“…Cuando la propiedad ChildrenAsTriggers de un control UpdatePanel se establece en true (valor predeterminado), los controles de devolución de datos que se encuentran dentro del control UpdatePanel se registran automáticamente como controles de devolución de datos asincrónica….”

Pero en este caso parecía que no :(, asi que hay que agregarlo a la colección de Triggers.

image
Así se puede exportar


Registrando el botón por código para actualizar asíncronamente? Tampoco me funciono

Tampoco me funciono registrar el control por codigo con el metodo ScriptManager.RegisterAsyncPostBackControl

En el ejemplo anterior para el botón btnExportarPDFv2 que esta dentro del UP

ScriptManager1.RegisterAsyncPostBackControl(btnExportarPDFv2);

NOTA: Si alguien me puede decir que pasa voy a agradecerlo!

 

Así que la única solución dentro de un Update Panel

Registrar el botón explícitamente (o sea mediante declaración) como Trigger.

 

Ejemplo para descargar

Si no puedes ver click aquí para la descarga
 


 

Enlaces

 

Crossposting desde mi blog en Geeks.ms: http://geeks.ms/blogs/fernandezja

Posted 03-30-2009 12:23 por Jose A. Fernandez | con no comments

Algunos plugins para Windows Live Writer que nos pueden ayudar

Para los que estamos con esto del “arte de escribir” aquí van algunos tips para utilizar Windows Live Writer (WLW) que es mucho mas fácil de mantener los artículos y dejarlos en borrador por varias semanas

Con WLW tenemos la capacidad de crear plugins, para eso necesitamos su SDK. Algunos de estos que nos pueden ayudar…

  1. Code Snippet plugin for Windows Live Writer
  2. SkyDrive Embed Plugin
  3. Backup con Live Writer Backup Utility (pero el recomendado es Live Mesh)
  4. Backup y sincronización “constante” con Live Mesh
     

 

1) Code Snippet plugin for Windows Live Writer

Con esto podremos colorear nuestros código C#, CSS, HTML, Javascript, MSH, T-SQL, VB.NET

image

 

2) SkyDrive Embed Plugin

Con esto podremos integrar los archivos disponibles en nuestra cuenta SkyDrive.
Si bien podremos hacer esto con la inclusión de codigo HTML este plugins nos ahorramos ….

  image

 

 

3) Backup con Live Writer Backup Utility

   Para resguardar nuestra configuración, post en borrador y recientes, plugins todo eso en un archivo .wlwbackup (que renombrando a .rar podremos visualizar su contenido).
   Mas info y enlaces de descarga en este articulo:

   - Live Writer Backup Utility: Resguardo de mis post publicados, en borrador, plugins y configuración.

  Pero este sistema de backup es de la “vieja escuela”, con Live Mesh es una vivir en un mundo sincronizado :)

4) Backup y sincronización “constante” con Live Mesh

     Live Mesh se merece otro post (que lo tengo armado… en breve)

     Una de las cosas que podemos hacer es sincronizar carpetas entre dispositivos (tipo backup) así que es un buen aliado en estos temas con tener varias maquinas y los post en borrador y recientes sincronizados
     La idea es de aquí:

Posted 03-11-2009 20:52 por Jose A. Fernandez | con no comments

Archivado en: ,

SQL Server 2008: Management Studio … “Impedir guardar cambios que requieran volver a crear tablas”

Esto es mas bien una protección que me gusto encontrarla, pero que no me permitía hacer justamente eso :), desde un diagrama modificar tablas.
En mi reciente instalación de Windows 7 en mi notebook, instalo el SQL 2008 para tenerlo + cerca e ir utilizándolo en mis pruebas, me arrojo el mensaje de protección


Mensaje:
No se se permite guardar los cambios Los cambios que se ha realizado requieren que se quiten y vuelvan a crear las siguientes tablas. Quizá ha realizado cambios en una tabla que no se puede volver a crear o ha habilitado la opción de Impedir guardar cambios que requieran volver a crear tablas

image


Me gusto este tipo de protecciones, pero me hubiera gustado que me dijese donde esta la opción. Pero de puro quisquilloso…

 

Donde esta la opción?


Herramientas >> Opciones

image

Luego en la opción de Designers >> "Impedir guardar cambios que requieran volver a crear tablas"

image

 

(from MSDN)

Evita que un usuario realice modificaciones que requieran volver a crear la tabla. Las acciones siguientes pueden requerir que se vuelva a crear una tabla:

  • Agregar una nueva columna en la mitad de la tabla
  • Quitar una columna
  • Cambiar la nulabilidad de columnas
  • Cambiar el orden de las columnas
  • Cambiar el tipo de datos de una columna

 

Enlaces

Crossposting desde mi blog en Geeks.ms

Posted 03-11-2009 20:03 por Jose A. Fernandez | con no comments

Archivado en:

Setup Project, ASP.NET: Install Assembly into GAC …

A veces queremos que una de nuestras componentes de un proyecto en particular se instale en la GAC (Global Assembly Cache), por lo menos lo necesitaba en un proyecto ASP.NET

Pero… donde esta la carpeta en el listado que nos brinda el agregar archivos en el setup project?

En el proyecto de setup:

image

Vamos agregar una carpeta (que es el apuntador al GAC)
(se pueden agregar “carpetas especiales” incluso carpetas personalizadas)

image

Allí podremos insertar nuestros assemblys

image

 

Enlaces

Crossposting desde mi blog en Geeks.ms

Posted 03-09-2009 17:56 por Jose A. Fernandez | con no comments

DESNEA.OfficeDay :: Limpieza general y arreglos en la oficina

Siempre hay papeles que ordenar, libros/revistas que están en cualquier lugar, elementos que colgar…  así que en la ultima reunión mensual alguien tiro la idea del OfficeDay, y el sábado (pasado) se cumplió aquí algunas de las fotos que puede delatar que algunos estaban trabajando…

 

Ordenamiento Lógico

Algunos estaba trabajando para la oficina en la maquina (migrando algunas cosas)… yo estaba entre ellos (créanme!) …me estoy dando cuenta que no salgo en la fotos… !

   img217 img220img216

 

Ordenamiento Físico

Otros arreglando la biblioteca (no hay fotos de biblioteca), y colgando algunos acrílicos que lo teníamos que colgar (de una vez por todas)
img221img227img229 img231
img222 img223 img224 img225 img226

img232img234img230img235

 

Nuestros servidores de desarrollo y de test les faltaba un toque para arreglar el rack

 img228    

 

(bonus track) Regalo by Federico…

No sabíamos donde era el justo lugar para el regalo que trajo a la oficina Federico, …quedo en su escritorio :)

img170

Posted 03-09-2009 16:18 por Jose A. Fernandez | con no comments

Archivado en:

Outlook: Descargar email completo con IMAP (y no solo el encabezado)

Enviar un email con una presentación .ppt para salvar al mundo, U$S 0… (1min de tu vida para reenviarlo de otro amigo/a armarlo)
…recibir un SPAM de Viagra o del Bank of America U$S 0 (con 1 segundo de tu vida para eliminarlo)
…Sincronizar nuestras carpetas no tiene precio ni desperdicio :) 


Por aquí en la empresa utilizamos desde que salió a la luz Google Apps desde el primer día que salió a la luz hace unos años (nos costo el cambio porque Francisco no quería dar el brazo a torcer el servidor de correo).
Como esta utilidad les ayuda a mis amigos Fabián y Federico (que todavía son fan del POP3)… que hace un par de días me hicieron recordar de este tema y por eso reflote este post (ya tengo menos en borrador)


Versión by Microsoft…

Aclaremos… en ese momento Live no existía, pero ahora Microsoft también tiene su plataforma Centro de administración de Windows Live (antes llamado Windows Live Custom Domains)
https://domains.live.com/
image

En Geeks.ms ofrece este servicio con dominio @geeks.ms … desde este enlace)
(que me dio oportunidad de probar el Outlook Connector, que será tema de otro post)

 

Seguimos con el tema del post… IMAP y Outlook

Aquí no vamos a ver como configurar IMAP de nuestra cuenta de Google Apps ya que eso lo tenemos por aquí, solo la configuración para forzar la descarga

Primeramente vamos a configurar las cuentas… 

image 

Allí en la configuración de correo, vamos a la configuración de Enviar y Recibir

image

Podemos hacer grupos de envió y recepción (pero en este caso utilizamos el que nos asocia por defecto)

image

Y en nuestra cuenta (del lado derecho) la seleccionamos y configuramos RECIBIR ELEMENTOS DE CORREO
La opcion predeterminada de IMAP es “Descargar encabezados…” yo la cambie en la carpeta Bandeja de Entrada que me descarga el elemento completo, me pareció bueno el comportamiento por carpeta.

image

 

 

Enlaces

Crossposting desde mi blog en Geeks.ms

Posted 03-05-2009 8:06 por Jose A. Fernandez | con no comments

Archivado en:

Error Outlook: “Operación cancelada debido a restricciones en este equipo. Póngase en contacto con el administrador del sistema”

Un amigo, Seba “Orchi”… me pregunta porque en su notebook los enlaces/hipervínculos dentro de mensajes que lee en su Outlook 2007 arrojaban el siguiente mensaje

Mensaje:

Operación cancelada debido a restricciones en este equipo. Póngase en contacto con el administrador del sistema

La pantalla:

image 

 

Solución

 

Solamente restableciendo al Internet Explorer como el navegador predeterminado se soluciono (por suerte)

image

Luego se puede volver a utilizar su navegador preferido, que en este caso era Firefox

Crossposting desde mi blog en Geeks.ms

Posted 03-02-2009 8:58 por Jose A. Fernandez | con no comments

Archivado en: