miércoles, 16 de junio de 2010

Copiando código VB desde Windows Live Writer

Uno de los motivos por los que me he bajado Windows Live Writer, es porque el editor WYSIWYG de blogger no pasa de ser un editor simple sin muchas opciones de edición (tampoco esperaba el Word, pero…)

Por ello y como el principal propósito de este blog es compartir código VB.NET y similar, me he bajado la extensión Visual Studio 2010 Pro Power Tools, porque entre una de sus muchas características está la de copiar código desde el IDE en formato HTML (genial para hacer copy/paste en el blog).

De hecho, esta característica tiene hasta su propia entrada en algún que otro blog http://blogs.msdn.com/b/kirillosenkov/archive/2010/06/07/copy-code-in-html-format-with-visual-studio-2010.aspx

Vamos con la prueba definitiva de copy/paste desde Visual Studio 2010 en Windows Live Writter.

aspx

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>
        Hola Mundo!!
    </h2>   
</asp:Content>

vb

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim a As String
        a = "Funciona el copy/paste en HTML"
    End Sub
End Class

Pues estoy la mar de contento, ahora ya puedo empezar mi viaje!


Un saludo!

Analizando Windows Live Writer

Vale, el anterior post demostró 2 cosas acerca de Windows Live Writer:

  1. Funciona.
  2. Necesito saber algo más sobre como manejarlo, porque si sólo lo utilizo para escribir texto plano me parece que estoy matando moscas a cañonazos.

Siendo así, este será la primera de algunas entradas relativas a Windows Live Writter. Para empezar, me ha parecido oportuno mostrar como he configurado en pocos pasos el programa para que trabaje con un blog de blogspot (servicio de blog de google).

Blogs > Agregar cuenta de blog…

image

image

image

Pues 3 simples pasos y ya está configurado.

Además, el programa también recupera el tema visual del blog para permitir ver el aspecto visual de las entradas mientras se redactan fuera de línea (sino te lo crees prueba a ver la vista previa, espectacular!!).

Así mismo, ofrece la posibilidad de guardar borradores, tanto en local (en tu máquina) como en el blog.

Por último, no concibo publicar una entrada si ninguna etiqueta o categoría (etiqueta lo llama blogger y categoría lo llama Windows Live Writer), pero no hay problema, pulso en establecer categorías y este dichoso programa que es muy listo me muestra la ya existentes o bien puedo crear una nueva.

image 

Un saludo!

Windows Live Writter

Necesito que escribir nuevas entradas en el blog sea algo más rápido y con más posibilidades de edición de las que me ofrece la edición en línea de blogger. Además un corrector ortográfico me hará parecer más culto frente a mis lectores.

Por suerte, he recordado que alguna vez queriendo instalar el messenger, también daba la opción de instalar Windows Live Writer. De este modo, manos a la obra. Lo he descargado y ya estoy escribiendo desde él mismo (por cierto, aparentemente ha sido muy sencillo configurar mi blog de google para poder escribir entradas en el mismo).

Un saludo!

domingo, 13 de junio de 2010

Propiedades recursivas

La verdad es que el título del post es casi definitivo, pero voy a intentar explicar mejor esto.

Hay algunas propiedades (hasta día de hoy, sólo conozco la propiedad Visible) que son recursivas, esto es que cuando se establece un valor en un control padre, se itera por todos los controles hijos para establecer de igual modo el valor de la propiedad.

En el caso de Visible me parece especialmente importante conocer esto porque si tu página juega a ocultar o mostrar controles en función de ciertos parámetros y además algunos de estos controles son a su vez hijos de otros controles, que entran ambos en este juego de "ocultación", puede que te vuelvas un poco loco con el tema.

Yo creo que un ejemplo terminará de poner las cosas en su sitio:

       ' CASO 1 
        Panel1.Visible = False
        ' Ahora tanto Panel1 como Button1 no son visibles,
        ' el valor de su propiedad Visible es False en ambos !!
        Button1.Visible = True
        ' A pesar de la asignación, Button1.Visible devuelve False
        ' porque su control padre también es False !!
        Button1.Visible = False
        ' Esta asignación si funciona como se espera,
        ' se asignó False a la propiedad Visible de Button1
        Panel1.Visible = True
        ' Ahora Panel1 es visible pero Button1 continúa siendo no visible,
        ' esto es que ha respetado la asignación anterior !!

       ' Este caso queda Panel1 VISIBLE, Button1 NO VISIBLE 

       ' CASO 2 
        Panel1.Visible = False
        ' Ahora tanto Panel1 como Button1 no son visibles,
        ' el valor de su propiedad Visible es False en ambos !!
        Button1.Visible = True
        ' A pesar de la asignación, Button1.Visible devuelve False
        ' porque su control padre también es False !!
        Panel1.Visible = True
        ' Ahora tanto Panel1 como Button1 son visibles,
        ' esto es que aunque la asignación pareció no funcionar,
        ' si que la respetado al establecer Panel1.Visible = True !!

        ' Este caso queda Panel1 VISIBLE, Button1 VISIBLE

Un saludo!

Me.DataBind()

Cuando un control enlazado a datos (GridView, Repeater, etc.) tiene establecida la propiedad DataSourceID a un control de origen de datos (ObjectaDataSource, SqlDataSource, etc.), y no se llama de forma explícita en ningún momento al método DataBind() del control enlazado a datos, se produce el enlace de forma automática durante el evento Page_PreRender para todos estos controles siempre y cuando estén visibles.

Esto es cierto como la vida misma, pero hay una excepción que merece la pena reseñar y que a mi, personalmente, me ha dado más de un quebradero de cabeza.

En el caso de llamar al método DataBind() de la página, esto es Me.DataBind(), la página llama a los métodos DataBind() de cada control enlazado a datos y con la propiedad DataSourceID establecida, estén o no estén visibles!.

Cuidado con esto, porque te puede armar un buen lío.

En cualquier caso, mi recomendación "dominguera" de hoy, es no llamar nunca a
Me.DataBind(), demasiado descontrol para mi gusto.

Un saludo!

Quitar un proyecto de VS2008 de Visual Source Safe

Hola:

No sé si alguna vez habrás tenido la necesidad de quitar los enlaces de control
de código fuente de un proyecto de Visual Studio. En mi caso, es más habitual de
lo que debería, así que después de algunas pruebas he llegado a determinar que son
necesarios los siguientes pasos:

  • Eliminar todos los ficheros con extensión *scc.
  • Quitar el atributo de sólo lectura de todos los ficheros de la solución.
  • En el fichero .sln eliminar las siguientes entradas de la sección
    ProjectSection(WebsiteProperties) = preProject
    • SccProjectName
    • SccAuxPath
    • SccLocalPath
    • SccProvider
  • Además, y también en el fichero .sln, eliminar por completo la
    sección GlobalSection(SourceCodeControl) = preSolution
  • En el caso de tener ficheros .vbproj en la solución, editar cada
    uno de estos ficheros y eliminar el contenido de los siguientes elementos (cuidado!,
    estoy hablando de eliminar el valor del elemento, no de borrar el elemento
    ):
    • SccProjectName
    • SccLocalPath
    • SccAuxPath
    • SccProvider

A mi estos pasos me funcionan en un solución de Visual Studio 2008 teniendo como
control de código fuente Visual Source Safe.

Un saludo!