Welcome to Kartones.Net Sign in

NetCódigo e Internet

El conocimiento es un bien que crece a medida que se comparte

April 2008 - Posts

Perdonarme, he pecado

Pues eso, que he cometido un pecado imperdonable. Me he comprado un Apple, por dios, ni siquiera soy capaz de poner el link típico cuando se nombra una empresa.

Me explico esperando el perdón. Hace meses me han asignado un cargo nuevo en mi empresa y la verdad es que no paro quieto en el mismo sitio mucho tiempo, además, se me han multiplicado los viajes de forma considerable. No, no me quejo de mi nuevo cargo, solo constato que llegó un punto en que odiaba mi anterior portátil, solo, debido a su peso, 2,4Kg.

Pues nada, hace un par de meses me puse a buscar un portátil alternativo. Mi objetivo era encontrar, sobre todo , portabilidad, era mi primera exigencia. Como comprenderán, cuando uno viaja este tema es muy importante, por lo menos para mí. Mis viajes no tienen que ver con presentaciones de proyectos de software, sistemas, bases de datos, etc. Mis viajes son fundamentalmente para ir a reuniones o presentaciones en las que, como máximo, uso powerpoint, word o excel. Por lo tanto buscaba un ordenador donde se pudiera ejecutar ofimática y poco más. Insisto, mi primer objetivo era portabilidad.

Esto coincidió con la salida al mercado del nuevo Apple MacBook Air. Al principio, ni caso, no se me pasaba por la cabeza pasarme a Leopard o complicarme la vida. Pero he aquí que un día voy a unos grandes almacenes al que había ido acompañando a mi mujer, y claro, siempre se hace uno el loco y termina en el departamento de informática. Aquí me topé con Apple, pues a curiosearlos. Cuando le toca el turno al Air, me quedé realmente sorprendido, por un momento se me pasó por la cabeza que era lo más portable que había encontrado, pero claro, enseguida mis neuronas se pusieron a buscarle fallos, sólo trae un puerto USB, ¿y yo para qué quiero más?. Pero no trae DVD, ¿y yo para qué quiero DVD en mis reuniones?. Solo trae 80Gb de disco, mis documentos no superan los 10Gb. Solo pesa 1Kg, no, esto no es discutbile, etc. etc. etc.

Otro problema, claro, comprarte un Apple para usar windows ....., pues no sé yo que decirte. Al final me lo he comprado, he comprado una licencia de Parallales, es un virtualizador como VMWare o Virtual Pc pero con bastante más experiencia que estos en el mundo mac, he probado todos y realmente se mueve mejor el primero. Te permite trabajar con los dos sistemas al unísono, abrir ficheros en cualquiera de los sistemas, arrastrar y soltar de un sistema a otro, etc. Muy bien este virtualizador.

Pues nada más, he pedido perdón, espero recibirlo y solo les dejo unas fotos del apartito.

Apple MacBook Air

PD: De paso me he puesto a probar Windows Live FolderShare. Está en versión beta y sirve para sincronizar x ordenadores desde la red. Esto es sincronizar, no es un depósito de ficheros como puede ser Windows Live SkyDrive. Está muy curioso.

Posted: Apr 24 2008, 07:39 PM by fsancab | with no comments
Filed under:

Google Chart con GridView y ModalPopUp
Veremos en este post cómo usar la API de Google Chart. Esta API es muy sencilla de usar, simplemente hay que construir una url que contenga una sintaxis correcta, esta url nos devuelve una imagen que podemos recorger y mostrarla en un control image. Pero lo vamos a complicar un poco, vamos a mostrar un gráfico de tarta pero recogiendo los valores de una fila de un GridView. Para ello utilizaremos un código que ya mostré en otro post y que nos permite elegir una fila simplemente haciendo click sobre ella. El resultado de la estadística lo mostraremos en un ModalPopUpExtender al que además le añadiremos un DragPanel para que nos permita mover la estadística. El resultado será como este:

Google Chart

Como ya dije, no voy a explicar cómo seleccionar la row para mostrar la estadística, eso aquí, el grid está basado en una tabla de la base de datos de prueba que nos proporciona Microsoft, Adventureworks, la pueden bajar aquí. El código no es nada complejo, después de elegir la fila, componemos la url válida de google chart, la almacenaremos en un label que no se ve en la página, tiene un css que la oculta:

<asp:Label ID="url" Text="Vacio" runat="server" CssClass="hide"></asp:Label>

Y en el evento SelectedIndexChanged del GridView rellenamos esta label, tal que:

Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.SelectedIndexChanged

' COMPONE URL GOOGLE CHART
Dim _Max As Double = (Math.Max(Math.Max(Convert.ToDouble(Me.GridView1.SelectedRow.Cells(2).Text), Convert.ToDouble(Me.GridView1.SelectedRow.Cells(3).Text)), Convert.ToDouble(Me.GridView1.SelectedRow.Cells(4).Text)))
Dim _Min As Double = (Math.Min(Math.Min(Convert.ToDouble(Me.GridView1.SelectedRow.Cells(2).Text), Convert.ToDouble(Me.GridView1.SelectedRow.Cells(3).Text)), Convert.ToDouble(Me.GridView1.SelectedRow.Cells(4).Text)))

Me.url.Text = "http://chart.apis.google.com/chart?chs=350x100&chd=t:" & Format(Int(Me.GridView1.SelectedRow.Cells(2).Text), "#") & "," & Format(Int(Me.GridView1.SelectedRow.Cells(3).Text), "#") & "," & Format(Int(Me.GridView1.SelectedRow.Cells(4).Text), "#") & "&cht=p3&chl=" & Me.GridView1.SelectedRow.Cells(2).Text & "|" & Me.GridView1.SelectedRow.Cells(3).Text & "|" & Me.GridView1.SelectedRow.Cells(4).Text & "&chds=0," & Format(Int(_Max), "#")

End Sub

Este código compone la url, en concreto, el gráfico de tarta, entre otras cosas hay que pasarle los valores mínimos y máximos para que se dibuje de forma correcta. De ahí que se utilice Math.Max y Math.Min para ello. La imagen con la estadística la he colocado dentro de un ModalPopUpExtender, a este se le ha aplicado estilos para que se muestre de forma atractiva. Estos estilos lo pueden ver si se bajan el código del proyecto al final del post. El javascript que llama el link de "Ver Imagen" es el siguiente:

<script type="text/javascript"> function getChart(){

// RECODIFICA URL GOOGLE.

var _url = document.getElementById("url").innerHTML;
_url= _url.replace(/&/g,"&");
// COMPRUEBA SI SE HA ELEGIDO ROW
if (_url != 'Vacio')
{
document.getElementById('GoogleChart').src = _url;
document.getElementById('GoogleChart').style.visibility="visible";
}
else
{
document.getElementById('GoogleChart').style.visibility="hidden";
}
return false;
}
</script>

¿Qué hace este script? Lo primero es cambiar el & por el encoding correcto que exige Google Chart, &, para ello se utiliza la función replace. A continuación comprueba que se ha elegido una fila en el GridView, si esto no se hubiera hecho, la label que hemos usado para rellenar la url tendría un valor de "Vacio", si esto es así, lo que se hace es ocultar la imagen para que no se vea mal. Si se ha elegido una row entonces la muestra. En cuanto al DragPanel del ModalPopUpExtender es muy sencillo, usamos el control DragPanelExtender del ToolKit de Ajax, ahora bien hay que realizar un truco y es incluir dentro del panel al que queremos dragear otro panel que sirva de contenedor, tal que así:
<ajaxcontroltoolkit:ModalPopupExtender ID="mdlPopupExtender" runat="server" TargetControlID="MuestraChart" PopupControlID="mdlpopup" CancelControlID="BtnCerrar" BackgroundCssClass="modalBackground" RepositionMode="None" BehaviorID="mdlpop" >
</ajaxcontroltoolkit:ModalPopupExtender>

<ajaxcontroltoolkit:DragPanelExtender ID="DragPanelExtender1" runat="server" TargetControlID="mdlpopup" DragHandleID="panele">
</ajaxcontroltoolkit:DragPanelExtender>

<asp:linkbutton ID="MuestraChart" runat="server" Text="Ver Imagen" OnClientClick="return getChart();">
</asp:linkbutton>

<asp:panel CssClass="containermdl" ID="mdlpopup" runat="server" style="display:none">
   <asp:panel ID="panele" runat="server">
     <div class="headermdl"> Prueba Google Chart</div>
     <div class="bodymdl">
       <img src="" alt="Sample chart" id="GoogleChart" style="visibility:hidden" runat="server" />
     </div>
     <div class="footermdl">
       <asp:Button ID="BtnCerrar" CssClass="closemdl" runat="server" />
     </div>
   </asp:panel>
</asp:panel>

Y ahora el DragPanelExtender apuntará a "panele" como DragHandleId y a "mdlpopup" como TargetControlId. Por supuesto, para utilizar otro tipo de gráfico, simplemente habrá que cambiar el código asociado al evento SelectedIndexChanged del GridView. Creo no haberme olvidado nada. Saludos

Bajar fuente

Posted: Apr 14 2008, 07:02 PM by fsancab | with no comments
HotFix para Visual Studio 2008 español

La verdad es que este hotfix ya había salido en inglés hace algunas semanas. No lo había publicado hasta ahora por este hecho. Como ya lo han sacado en castellano aquí va el link desde donde se puede descargar.

Resuelve lo siguiente:

HTML Source view performance

  • Source editor freezes for a few seconds when typing in a page with a custom control that has more than two levels of sub-properties.
  • “View Code” right-click context menu command takes a long time to appear with web application projects.
  • Visual Studio has very slow behavior when opening large HTML documents.
  • Visual Studio has responsiveness issues when working with big HTML files with certain markup.
  • The Tab/Shift-Tab (Indent/Un-indent) operation is slow with large HTML selections.

Design view performance

  • Slow typing in design view with certain page markup configurations.

HTML editing

  • Quotes are not inserted after Class or CssClass attribute even when the option is enabled.
  • Visual Studio crashes when ServiceReference element points back to the current web page.

JavaScript editing

  • When opening a JavaScript file, colorization of the client script is sometimes delayed several seconds.
  • JavaScript Intellisense does not work if an empty string property is encountered before the current line of editing.

Web Site build performance

  • Build is very slow when Bin folder contains large number of assemblies and .refresh files with web-site projects.

Información más detallada aquí.

Posted: Apr 10 2008, 07:00 PM by fsancab | with no comments
Filed under:

GridViews con estilo

He pensado publicar algunos de los post que tengo en mi otro blog y que han resultado interesantes a los visitantes del mismo. Este versa sobre cómo aplicar estilos al GridView. Copio y pego.

Este post, más que demostrar qué se puede hacer con un gridview, demuestra qué cosas, entre otras, se puede hacer con hojas de estilo.

Les muestro el mismo gridview, es decir, sin cambiar código en el asp o en el codebehind, distintas formas de visualizar un gridview. El único código que tiene la página es el que permite cambiar al vuelo la hoja de estilo. Como esto ya lo expliqué en otro post, no me voy a repetir. También contiene código para elegir el número de filas a mostrar por página del gridview e ir a una página concreta, esto también lo expliqué en su día.
Me he inspirado en algún tema ya existente, por ejemplo, el azul es el estilo por defecto de ExtJs, el marrón es de Matt Berseth, los otros son de inspiración propia, lo que demuestra que mi profesionalidad en diseño es bastante pobre.

Da igual, la cosa es demostrar como se puede cambiar la apariencia de un control, o cualquier cosa, simplemente jugando con estilos.

GridView Azul
GridView Gris

GridView Marrón

GridView Amarillo

El código fuente aquí

Posted: Apr 01 2008, 08:10 PM by fsancab | with 2 comment(s)
Filed under: , , ,