Crear una aplicación Web desde Cero (VB y CSharp)- Part II – Páginas Maestras

Continuando al fin el tutorial que comenzó hace ya tiempo Crear una aplicación Web desde Cero (VB y CSharp)- Part I

Aquí les dejo la sucesión dedicado  a la creación de Páginas Maestras

En muchas ocasiones hemos optado por tener un diseño único en las páginas y cuando teníamos que editar una imagen un color o algo de ese diseño nos tocaba las de Caín J revisar todas las páginas y hacerles el cambio a todas. La idea fundamental de las MasterPages en ASP.net es precisamente tener una página principal con el diseño y con las secciones habilitadas (ContentPlaceHolder) para editarlas en las páginas que se generen a partir de la MasterPages.

Ventajas de tener una página maestra:

1. Ahorrarnos el copiar y pegar de página en página, es decir, si ya teníamos un modelo de cómo se verán nuestras páginas nosotros optábamos en copiar todo su html y lo pegábamos en las nuevas páginas para mantener el diseño. Permitiendo centralizar diseño de las páginas para que las modificaciones puedan llevarse a cabo en un solo lugar.

2. Permiten crear un diseño coherente para las páginas de la aplicación

3. Aparte del aspecto y el diseño también podemos controlar el comportamiento estándar que desea que tengan todas las páginas (o un grupo de páginas) de la aplicación en una sola MasterPage.

4. Mas fácil la edición del HTML en las paginas hijas, ya que las nuevas adiciones en las paginas están contenidas dentro de un ContePlaceHolder.

Ok comencemos a nuestro proyecto que hemos creado en el Post anterior le daremos con el botón derecho del mouse o se van al Menú “Sitio Web” y seleccionamos la opción “Agregar Nuevo Elemento” y buscaremos una plantilla llamada “MasterPages” le asignan el nombre que ustedes deseen, yo le diré “MasterPrincipal”. Veamos como se muestra en la siguiente Imagen.

Antes de agregar el diseño es conveniente borrar el ContentPlaceHolder que se encuentra dentro del Tag Body del HTML que aparece al crear la MasterPage

<body>

<form id=»form1″ runat=»server»>

<div>

<asp:ContentPlaceHolder id=»ContentPlaceHolder1″ runat=»server»>

</asp:ContentPlaceHolder>

</div>

</form>

</body>

Mientras que el ContentPlaceHolder que aparece en el Head lo dejaremos allí para futuras asignaciones J, ahora si procedemos a darle un diseño sencillo por lo que utilizaremos “3 Div” diferentes uno lo llamaremos dvCabezal, el otro dvMenu, y por ultimo dvContenido dentro de este ultimo Div agregaremos un ContentPlaceHolder que llamaremos cphContenido.

Esto debe quedar como la siguiente Imagen:

image

Con todo esto podemos seguir con el resto del tutorial, ahora para ver (probar) nuestra MasterPage borramos del proyecto la página Default.aspx y luego nos dirigimos al Menú “Sitio Web” y seleccionamos la opción “Agregar Nuevo Elemento” y buscaremos una plantilla llamada “Web Forms” le asignan el siguiente nombre “Default” y marcan la casilla de verificación llamada “Seleccionar la Pagina Principal” (Fig. Nuevo Elemento) le damos aceptar y luego seleccionamos Nuestra MasterPage” (Fig. Seleccionar MasterPage).

image

Fig. Nuevo Elemento

image

Fig. Seleccionar MasterPage

Ahora veremos la página de la siguiente manera:

image

Ahora puedes arrojar los controles que desees en la sección cphContenido y probar presionando la tecla F5, ya sé que se ve blanco y feo nuestro sitio pero en los próximos capítulos te diré como solventar ese detalle.

[Off-Topic] 10 Malos Hábitos en el Trabajo

Me agrado este post que me encontré en la pagina http://spargouc.org/ y deseo compartirlo con todos ustedes.

Fuente: http://spargouc.org/general/recomendaciones/diez-malos-habitos-en-el-trabajo/

A continuación, desgranamos algunas de las actitudes que pueden ponerte en el punto de mira de las empresas. Son 10 errores que debes evitar cometer:

  1. Dilación con el trabajo: No dejes para mañana lo que puedas hacer hoy. Esta frase resume una actitud positiva frente a cualquier trabajo. Resalta un alto grado de profesionalidad en el trabajador y esto es muy positivo. En cambio, si vamos dejando el tiempo pasar, las tareas se nos acumulan encima de la mesa y tenemos que terminarlo todo, deprisa y corriendo, siendo en ocasiones el resultado no el esperado.
  2. Poca rigurosidad con el e-mail: Si miramos la cuenta de correo electrónico, miramos la cuenta de correo electrónico. No podemos pasar el día navegando por Internet porque se nos va a acumular el trabajo, como decíamos en el punto anterior. Sólo cada cierto rato, y durante un breve espacio de tiempo, podemos desconectar.
  3. No confundas lo informal con lo irrespetuoso: En una empresa como en cualquier otro sitio, debemos saber dónde está la línea que marca la diferencia entra la informalidad y el ser irrespetuoso, y asegurarnos de no cruzarla nunca. Faltar al respeto es una falta grave.
  4. No te aproveches de la libertad de acción: Te dan la mano, y tu les coges el brazo. Actuar así puede costarte muy caro, porque mientras ellos demuestran que confían en ti, tu les das todas las muestras de que no pueden hacerlo.
  5. Falta de adaptación: Demuestra siempre que estás a gusto con tu equipo y que te sientes parte de él. Hacer la guerra en solitario no es una buena idea en ninguna compañía.
  6. Llegar siempre tarde: Hoy en día, no pasa nada si llegas cinco minutos tarde, o incluso diez. Las empresas saben que luego estiras tu jornada y acabas trabajando incluso más. Pero no lo conviertas en un hábito, porque primero son cinco minutos, luego diez y luego veinte, treinta, etc. Esto puede poner en duda tu profesionalidad.
  7. Rigidez: Debes demostrar que eres una persona abierta, tanto social como mentalmente. La rigidez o los pensamientos únicos no funcionan en las empresas de hoy, en las que prevalece el trabajo en equipo.
  8. Llevar siempre la contraria: Tu opinión importa y las críticas constructivas siempre son bienvenidas. Pero resulta lógico que si estás en desacuerdo con todas las decisiones que se toman, ocurre algo más. Quizá esta no es tu empresa.
  9. Hablar mal de la compañía: Mucho cuidado con lo que dices y a quién se lo dices. Puedes discutir algunas acciones de la empresa porque no te parecen las más adecuadas, pero si no te gusta tu lugar de trabajo, no pierdas el tiempo criticando.
  10. Hablar mal de un compañero: Tampoco está bien criticar a otro compañero constantemente. Si no nos gusta su trabajo, deberíamos hablarlo con él directamente, sin tapujos.

Cualquiera de estas acciones puede llevar a las empresas a marcarnos como trabajadores poco corporativos, por mucho que nuestro trabajo sea excelente. Y sino, fijémonos en el mundo del fútbol: hay tremendos jugadores que mueren por la boca. Da igual los goles que marquen. En la empresa, sucede lo mismo. Nadie es imprescindible.

[OFF-Topic] Mandamientos de un Programador

Esto lo conseguí hace tiempo y lo había guardado en un doc. de Word lo que no tengo a la mano es quien fue el creador de estos mandamientos por lo que pido disculpas si infrinjo en alguna ley de derecho de autor..

1. Entiende y acepta que tendrás errores. La cuestión es hallarlos temprano, antes que estos aparezcan cuando el producto ya esta ‘en vivo’. Afortunadamente, excepto para aquellos que están desarrollando sistemas de control de ojivas nucleares, los nuestros; no son errores fatales. No somos cirujanos; podemos aprender, reírnos y continuar con otra cosa.

2. No eres tu código. Recuerda, la cuestión es revisar para encontrar problemas, y claro que los hallarán. No lo tomes personal cuando alguien más los encuentre.

3. No importa cuanto sepas Karate, siempre habrá alguien que sepa más. Este hecho ayudo a los Samurai en el Japón imperial a no atacar a todos indiscriminadamente. Avanzado a tiempos actuales, estas personas con más conocimientos te pueden enseñar nuevas ‘patadas’.

Busca y acepta la retroalimentación de otros, aun cuando pienses que no es necesario.

4. No rescribas el código de otros programadores.

Existe una línea muy estrecha entre ‘arreglar el código de otra persona’ a ‘reescribir el código de otras personas’. Los programadores recién salidos de las escuelas son muy

propensos a esto.

5. Trata a las personas que entienden menos que tu con respeto y paciencia. Las personas que no están inmiscuidas en cuestiones técnicas y que tratan con programadores diariamente, por lo regular piensan que somos ‘prima donnas’ cuando hacemos el trabajo bien e incompetentes cuando cometemos errores. Enojarte acrecienta esta percepción y limita a tus clientes para comunicarse contigo.

6. La única constante en el mundo es el cambio. Mantente abierto y acéptalo con una sonrisa. Mira cualquier cambio de los requerimientos del cliente, plataforma ó herramientas como un nuevo reto y nunca como un inconveniente que tienes para empezar una discusión sin futuro.

7. El mando lo obtienes usando tus conocimientos, no tu posición. La autoridad la ganas con conocimientos y la autoridad genera respeto. Así que si quieres cultivar un ambiente de desarrollo sin egoísmos, primero cultiva respeto.

8. Pelea por lo que creas pero también acepta las derrotas amablemente. Entiende que algunas veces tus ideas serán no escuchadas.

9. No seas el -nerd del cuarto obscuro-. Deja de ser el programador que solo sale de ese cuarto para comprar una coca-cola. Estando ahí dentro estarás fuera del contacto con la gente, fuera de vista y por supuesto fuera de los incrementos salariales.

Liberado SilverLight 3 y Expression Studio 3

Si ya se que es algo tardío esta información pero igual no esta demás decirles las cosas nuevas que trae este lanzamiento y que mejor forma que darles el link de la traducción a español de lo que Scott Guthrië ha escrito con respecto a SilverLight 3

Gracias José María Laos por la excelente traducción.

http://thinkingindotnet.wordpress.com/2009/07/11/ya-esta-aqui-silverlight-3/

Por cierto ya esta disponible para los suscriptores de MSDN Premium Expression Studio 3 que contiene las siguientes mejoras:

Expression Blend 3 es una nueva versión que nos permite trabajar mucho más fácilmente. Algunas de las mejoras son:

  • Sketchflow: Sketchflow permite crear prototipos, experimentar con experiencias dinámicas, e incorporar feedback de los clientes mucho más fácilmente. Si no habéis visto o provado – deberíais. Es prácticamente un juego cambiar la forma de crear aplicaciones.
  • Intellisense:  Blend 3 incluye soporte de intellisense para C#, VB y XAML. Podéis escribir código y manejadores de eventos en Blend sin tener que cambiar a VS.
  • Behaviors: Blend 3 soporta comportamiento que puede encapsular interacciones complejas de diseño en componentes reusables que pueden aplicarse directamente a un control en la superficie de diseño. Esto permite que los diseñadores añadan rápidamente funcionalidaes y comportamientos a aplicaciones sin tener que escribir código.
  • Importación de Adobe Photoshop e Illustrator: Blend 3 incluye la importación de archivos de Photoshop e  Illustrator. Como parte del proceso de importación podéis ver y seleccionar capas individuales de Photoshop, personalizarlas y reagruparlas, y tener elementos de Photoshop/Illustrator que mantienen los formatos originales en XAML: incluyendo posicioens de capas, texto editable y opciones de fuentes, y elementos de conversión de vectores a XAML.
  • Datos de ejemplo: Blend 3 soporta datos de ejemplo en tiempo de diseño que hace más sencillo probar aplicaciones con datos conectados y ver cómo se ve sin tener que acceder a datos. Podéis generar datos de ejemplo o importarlos de un archivo XML y ponerlos a disposición de los controles en tiempo de diseño. Podéis perosnlaizar los detalles de vuestros datos, y podéis cambiar fácilmente entre los datos de ejemplo y los reales en ejecución.
  • TFS: Blend 3 incluye soporte para Team Foundation Server (TFS) – permitiendonos usar el control de código. Blend comparte el mismo formato de proyecto y de solución que Visual Studio – permitiendo que tanto Blend como VS trabajen en simultáneamente en los mismos proyectos.
  • Otras mejoras:  Se han incluido más mejoras como soporte para animaciones, transformaciones 3D, efectos visuales y se ha mejorado el diseñador del Visual State.
  • Expression Encoder 3 también incluye una aplicación de captura de pantalla para crear tutoriales y documentación.

Truco: Distinct en LINQ

Este truco es mas que todo para aclarar la duda que surgió en al finalizar el WebCast que por cuestiones de tiempo no logre responderle, además que no esta mal saber como usarlo.

Con esta Clausula podemos restringir la visualización de los datos repetidos en una consulta.

El Siguiente Truco esta orientado a LINQ to SQL (C# – ASP.net)

//establezco mi DataContex
dcNorthwindDataContext db = newdcNorthwindDataContext();
//Defino mi consulta
var Consulta = (from t indb.Territories
               select t).Distinct();
//Muestro el resultado en un GridView
gvLINQtoSQL1.DataSource = Consulta.ToList();
gvLINQtoSQL1.DataBind();

El Siguiente Truco esta orientado a LINQ to Objects (C# – ASP.net)

Clase:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace DemoLINQCSharp
{
    public class clsSpeaker
    {
        private string m_sNombre;
        private string m_sApellido;
        private string m_sTema;
        private int m_iDuracionMinutos;

        public string Nombre
        {
            get
            {
                return m_sNombre;
            }
            set
            {
                m_sNombre = value;
            }
        }

        public string Apellido
        {
            get
            {
                return m_sApellido;
            }
            set
            {
                m_sApellido = value;
            }
        }

        public string Tema
        {
            get
            {
                return m_sTema;
            }
            set
            {
                m_sTema = value;
            }
        }

        public int DuracionMinutos
        {
            get
            {
                return m_iDuracionMinutos;
            }
            set
            {
                m_iDuracionMinutos = value;
            }
        }
    }
}

 

En el Formulario Web:

Defino el metodo que llena los datos a partir de la clase mencionada anteriormente.

public List<clsSpeaker> speaker()
      {
          List<clsSpeaker> listaSpeaker = new List<clsSpeaker> 
          { 
              new clsSpeaker{Nombre="Alexander", Apellido="Jimenez", DuracionMinutos=60, Tema="LINQ con C#"},
              new clsSpeaker{Nombre="Manuel", Apellido="Mendez", DuracionMinutos=45, Tema="SilverLight"},
              new clsSpeaker{Nombre="Oscar", Apellido="Berroteran", DuracionMinutos=60, Tema="LINQ con VB"},
              new clsSpeaker{Nombre="David", Apellido="Delgado", DuracionMinutos=90, Tema="Comunidades"},
              new clsSpeaker{Nombre="Rafael", Apellido="Linares", DuracionMinutos=45, Tema="SQL Server 2008"},
              new clsSpeaker{Nombre="Sara", Apellido="Linares", DuracionMinutos=60, Tema="Comunidades"}
          };
          return listaSpeaker;
      }

 

Lleno en GridView de mi pagina web a traves de la invocacion de un LinkButton:

 

protected void lnkLINQtoObjects1_Click(object sender, EventArgs e)
{
    var Consulta = (from s in speaker()
                   select s).Distinct();
    gvLINQtoObjects1.DataSource = Consulta.ToList();
    gvLINQtoObjects1.DataBind();
}

Espero que le sea de ayuda.