Chalalo Land

Tecnologías ASP.NET y un poco Más

Contacto


 Si quierer cooperar, yo feliz, muy agradecido :)

De donde me Visitan?

Locations of visitors to this page

Generic Content

Si te gustaron los articulos, y te animas te estaría muy agradecido!


Recent Posts

Tags

Community

Blogs de MVP

Amigos Geeks

Blogs Imperdibles

GODS

Archives

Email Notifications

July 2007 - Artículos

Exportar GridView a Excel

NOTA: Upgrade del artículo, sin paginación : [Tips]Exportar GridView a Excel (Sin Paginación) ...al fin

NOTA2: Para Formatear las Columnas (por ejemplo para que se pueda exportar con formato 0000002) ver:
http://geekswithblogs.net/azamsharp/archive/2006/08/12/87804.aspx

Me imagino que para algunos este tema está más que visto y con soluciones más completas, pero nunca esta demás recordarlo y decir el por qué de las cosas.A más de alguno le habrá tocado la tarea de exportar un gridview en particular a una planilla Excel, así que les dejo el código y lo explicamos un poco vale?

Escenario
Tengo una grilla en mi webform que obtiene los datos a partir de una consulta previa mediante un ObjectDataSorce( I Love it!) , luego se le ocurre al cliente, que esta info, la quiere en Excel. Así que vamos, añadimos un webcontrol botón y agregamos el siguiente código.La primera vez me lo encontré en C#,aplausos al autor de ello, asi que lo cambié a VB.NET

 

 

Dim sb As StringBuilder = New StringBuilder()
Dim sw As StringWriter = New StringWriter(sb)
Dim htw As HtmlTextWriter = New HtmlTextWriter(sw)
Dim pagina As Page = New Page
Dim form = New HtmlForm
grilla.EnableViewState =
False
pagina.EnableEventValidation = False
pagina.DesignerInitialize()
pagina.Controls.Add(form)
form.Controls.Add(grilla)
pagina.RenderControl(htw)
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader("Content-Disposition", "attachment;filename=data.xls")
Response.Charset =
"UTF-8"

Response.ContentEncoding = Encoding.Default
Response.Write(sb.ToString())
Response.End()

Si te percataste, uno de los puntos importantes el crear el objeto form de la clase Htmlform, para que? para que la grilla se encuentre dentro de la nueva página  que a su vez tenga la etiqueta form con el correspondiente runat="server", de otra manera, se te va a caer. Ahora bien, lo único que debes cambiar de este código es el nombre de la grilla y listo!!![H]

Espero que te sirva,
Saludos,

Gonzalo

 

 

 

Debugear JScript con Orcas

Navegando y navegando, me encontre con este interesante blog, nos habla de como hacer el debugging  de JScript en Orcas.El  JScript Intellisense de "Orcas" también esta extraordinario, me imagino que más de uno de nosotros  ocupabamos alert para mostrar las variables y/o mensajes cuando debugeabamos nuestro código. Bueno, ahora ya no es necesario =).

                                              Demasiado Cool! Big Smile

Para ver como hacer el debugging en JScript y la configuración del IE 7.0 para que ello pueda ser posible , ver este post.

Por mi parte estoy desarrollando un website para una Universidad con Orcas, y el manejo de CSS, la visualización de estos n el UI, el Intellisense en general (JScript y código manejado), manejo de tablas, etc, es muy superior a VS 2005 :)

Saludos,

Gonzalo. 

Usando el control BusyBoxDotNet

Este artículo lo escribí hace un tiempo para el Guille, pero como este va a ser mi blog oficial =) , lo comparto también acá.

Introducción

Hola que tal, vamos a revisar un control bastante útil para ASP.NET 2.0, este control lo puedes descargar desde la pagina del autor: http://busyboxdotnet.qsh.eu/Projects.aspx y te será de mucha utilidad para  mostrar un efecto visual de alto impacto en tus aplicaciones Web.

 

La razón...

Si no estas familiarizado con el desarrollo de sitios Web, creo que por lo menos has navegado por un par de decenas de ellos, y te has fijado que en algunos, al procesar los datos, la página se queda en blanco mientras se esta esperando la respuesta del servidor verdad?  Con BusyBoxDotNet esto se acabó, este control nos permite mostrar en pantalla mientras se realiza, por ejemplo, un postback una ventana en donde se le indica al usuario que la página aun no se carga debido a que esta procesando una solicitud.

De que manera?

BusyBoxDotNet nos  provee de  una  ventana emergente, de la siguiente forma.

Preview de BusyBoxDotNet

Si no te gusta, puedes modificarla a tu gusto,  según el mismo autor, las características principales de este webcontrol son:

  • Una muy buena integración con VS 2005, no necesita javascript adicional, ni CSS , ni HTML adiciona; todo esta embebido en un control que es muy simple de adicionar a nuestro proyecto.

  • La compatibilidad, ha sido testeado en firefox/mozilla, Internet Explorer, Opera, Netscape Navigator.

  • Se puede modificar el aspecto visual y funcional a gusto!

Instalación.

Paso 1

Primero lo primero, la descarga del Control, has clic acá: Bajar BusyBox

Lista de archivos

Lista de archivos del control BusyBoxDotNet

Paso 2

Necesitas agregar el control a la barra de controles de Visual Studio 2005, para ello pincha con el botón derecho sobre la Toolbar y selecciones “Choose ítems” o Elegir elementos, luego exploras tu disco duro hasta encontrar la carpeta en donde descomprimiste el archivo y seleccionas BusyBoxDotNet.dll.

Instalar el control en la toolbar de VS 2005

Una vez seleccionado, podremos ver en nuestra Toolbar los elementos adicionados.

Componentes agregardos a la toolbar

 

Agregar el control a tu WebForm

Al agregar el control BusyBox a tu webform, automáticamente se crearan las referencias hacia los archivos binarios, y además, el control de consultará si deseas registrar el HTTPHandler  en tu web.config automáticamente, que mejor!, eso si, si quieres agregarlo a manualmente, deberás escribir las siguientes líneas en tu web.config:

<httpHandlers>
    <add verb="*" path="BusyBoxDotNet.axd"
        type="BusyBoxDotNet.ResourceHttpHandler, BusyBoxDotNet" />
</httpHandlers> 

    Referencias para VS 2005

 

A Probarlo!

Para probarlo, podemos agregar un boton webcontrol en nuestro webform ( o cualquier control que genere un postback), ya que vamos a ver como funciona BusyBoxDotNet al momento del postback.

Seguramente casi no alcanzaste a ver la ventana emergente de BusyBox, por lo que puedes agregar el siguiente código en el botón para producir una pausa por 3 segundos.

private void Button1_Click(object sender, EventArgs e)
{
    System.Threading.Thread.Sleep(3000);
}

a... es que tengo que seguir escribiendo para que veas el efecto, si no escribo al menos tres líneas, no se notará que el texto está totalmente justificado (o alineado, si lo prefieres).

 

Personalizando

Existen varias situaciones en donde vas a querer personalizar este control, como la interfaz gráfica  así como también el cuando se va a mostrar la ventana.

Según el autor de este muy buen control, una de las propiedades mas importante es ShowBusyBox, los valores que acepta esta propiedad son:

OnLeavingPage :  La ventana se mostrará cuando se deje una pagina, es decir, cuando se hace un postback y/o cuando se esté cargando otra pagina.

OnPostBackOnly: La ventana se mostrará cada vez que se haga un PostBack al servidor.

OnLoad : Se muestra la ventana cuando la pagina comienza a realizar el render y se oculta cuando el render termina. Debes modificar la propiedad OverLay a Falso para poder utilizarlo en este evento

Custom: Hay veces que vas a querer mostrar la ventana es un evento específico de un control, para esto, se invoca a la propiedad ShowFunctionCall:

private void Page_Load(object sender, EventArgs e)
{
    Button1.Attributes.Add("onclick", BusyBox1.ShowFunctionCall);
}

 

 

Por mi parte, lo estoy utilizando para mostrar un mensaje al usuario mientras el archivo que él seleccionó, se esta subiendo al servidor.

Ejemplo de utilización de BusyBox

Queda muy bueno verdad? 
Bueno, ahora que sabemos algo más de este excelente control, descarguémoslo, démosle gracias al Autor Simone Busoli , cooperando con su proyecto para que continue brindándonos controles tan buenos como este.

Para ver una demo con todas las propiedades, visita la pagina del autor:

http://busyboxdotnet.qsh.eu/Demo.aspx

Saludos,
Gonzalo

 

Posted: 18/7/2007 15:07 por Gonzalo Perez | con 17 comment(s) |
Archivado en: ,
Microsoft Codename "Astoria" - May 2007 Community Technology Preview -Noticia Rápida.
Geeked

Permite a los desarrolladores crear y consumir Data Services en la Web, se puede integrar con Silverlight (eso es lo bueno =),  Estos servicios exponen datos  sobre un interfaz simple  HTTP que se puede consumir por Sitios  Web  Basados en AJAX.

Espero tener un poco de tiempo para probarlo!. Bueno, de todos .. hay que probarlo!!!

PD: Mucho Codename y mucho beta no?Hmm

Saludos,
Gonzalo

Posted: 18/7/2007 14:40 por Gonzalo Perez | con no comments |
Archivado en:
Microsoft Gadget + AJAX

Los Gadget para Sidebar de Vista son pequeñas aplicaciones para aumentar la productividad, o por lo menos hacen el intento de esto. Si bien los gadget que vienen por defecto no son herramientas muy muy productivas que digamos, podemos crear nuestros propios gadget que si nos ayuden a visualizar información relevante. Esta información relevante no solo de la propia maquina( en el caso que queramos utilizar la API)

Desarrollar un gadget es bastante sencillo, hace un tiempo subí un screencast indicando como se hace :).

Vemos ahora como crear un gadget para que se comunique con una pagina web mediante Ajax, este ejemplo es básico, pero ustedes extenderlo y crear sus propios gadget.

Esto surgio por la necesidad de crear un gadget que se comunicara con una pagina web, la cual se conectaba a su vez, con un ftp server y devolvía un listado de archivos, la cual era comparada por el gadget con una carpeta local y luego mostraba al usuario si su aplicación estaba actualizada o no.(que enredo!).En este caso , veremos algo mas sencillo.

Supongamos que tenemos una página web que nos devuelve: 

<?xml version="1.0" encoding="utf-8" ?> 
  <Informaciones>
         
<Noticia>HOLAAAA</Noticia>
  
</Informaciones>

 Paso 1 - Creacion de la funcion en el HTML base del gadget que se conectará con la webpage.

function obtNoticia(){
    mensaje.innerHTML =
"Conectando"
    imagen.innerHTML =
"<IMG src='loading2.gif'>";
    noticiaObj = new ActiveXObject("Msxml2.XMLHTTP");
    noticiaObj.open(
"GET", "http://localhost:51669/aspipvg/Default.aspx", true);
    noticiaObj.onreadystatechange =
function() {if (noticiaObj.readyState === 2) {
           
if (noticiaObj.status === 200) { imagen.innerHTML = ""; mensaje.innerText = "";
                  rssXML = rssObj.responseXML;
                 
// leer el XML
                 
 Noticia = rssXML.getElementsByTagName("Noticia");
                 
mensaje.innerText= Noticia[0].firstChild.text;
            }
else {
                  imagen.innerHTML =
"<IMG src='del.gif'>";
                  mensaje.innerText =
"Error...";
    
} else {
       
mensaje.innerText = "Cargando...";
    }
}
noticiaObj.send(
null);
}

Esta claro que mensaje e imagen son etiquetas span, por lo que se pueden modificar con innerHTML o innerText dependiendo del caso.Por  ejemplo la imagen cargando.gif es un gif animado ( los típicos loading.gif que se usan cuando desarrollas usando ajax).

   rssXML = rssObj.responseXML : Lo utilizamos para capturar el XML de la página que se llamó asincronamente.

Luego leemos la noticia y asignamos al span:

 Noticia = rssXML.getElementsByTagName("Noticia");
 
mensaje.innerText= Noticia[0].firstChild.text;

Esta función la puedes llamar desde el onLoad del tag body

<body style="color: white; font-weight: bold; margin-left: 15px;" onload="obtNoticia();">

Interesante también es habilitar al gadget para que cada cierto tiempo busque actualizaciones en la webpage. Una manera fácil de hacerlo es utilizando la función de BLOCKED SCRIPT

   setInterval(obtNoticia,1000 * 10);

Con esta función decimos que obtNoticia sea llamada cada 10 segundos. También puede hacer un link dentro de tu gadget que llame a la función obtNoticia de tal manera de dar al usuario la posibilidad de hacer el refresh.

No queda nada de mal Big Smile

Espero que les sirva,
Saludos,
Gonzalo

 

 

 

Posted: 14/7/2007 16:30 por Gonzalo Perez | con 10 comment(s)
Archivado en: ,
Microsoft Homepage Starter Kit 1.0

 

¿Qué es?

Un sensillo Sistema de Gestión de Contenidos basaso en ASP.NET 2.0, para construir sitios dinámicos. Está bastante bueno para estudiantes.

Pincha aca para ir a la página de MSDN en donde te enseñan a ocuparlo

 Para saber más sobre cuestiones adicionales, novedades, versiones y noticias del proyecto, visita My Web Pages Starter Kit en Codeplex.com.

Esta muy bueno!
Saludos,
Gonzalo