[Silverlight] Bug con el evento LosFocus propon una solución y gana un Windows Vista :P

18 12 2009

Buenas,

Sé que hace un rato que no escribo, por cuestiones de trabajo, cambio de empresa y esas cosas. Pero el día de hoy quiero platicarles algo interesante que me sucedió en un proyecto que estoy desarrollando con Silverlight 3 y para aquel que de la mejor respuesta se ganara un Windows Vista Ultimate, les platico…

El escenario es el siguiente:

1-. En una aplicación de tipo Silverlight coloquen 2 TextBox

2.-agregen un nombre a cada TextBox para identificar quien genero el evento.

3.- en cada control agreguen su propio evento de LostFocus

4.- en cada evento de LostFocus muestren un mensaje en pantalla con el identificador del control

5.- Ejecuten la aplicación y pierdan el foco de textbox1 observen que al perder el foco se dispara el evento LostFocus del segundo TextBox :S

Esto es un comportamiento quizá normal porque no deja de ser un arreglo de controles y la manera de crear los controles dentro de Silverlight es diferente a como se hace en WPF.

Bueno a lo que voy con el reto, la mejor propuesta para controlar el evento de LostFocus del textbox le regalaré un Windows Vista Ultimate :D .

Espero sus opiniones y cualquier duda no duden en comentar  o escribir a

norberto@student-partners.com

Saludos.

Technorati Tags: ,




[WTF] Pero… que le paso… a SQL Server

27 11 2009

Buenas,

Solo puedo decir: “Tengo miedo, tengo miedo”… jaja :P

Alguna idea de lo que le pasa a SQL Server solo con ver esta imagen. Espero que alguien me diga si le ha pasado esto y me ayude a solucionarlo :S

errorSQLServer2008

Etiquetas de Technorati: ,,




[Office] Listo Office 2010 Beta

19 11 2009

Una buen noticia, ya esta disponible al publico en general la Beta de Office 2010, así que les recomiendo descargarlo y probarlo :D

Link para Descarga:

http://www.microsoft.com/office/2010/es/default.aspx

Etiquetas de Technorati: ,,




[XML] Error – "Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function."

14 11 2009

buenas,

Aquí mi solución para este problema , supongamos que tenemos el siguiente archivo XML, que puede ser una respuesta de consumir un WebService, un archivo que generamos, etc.

Archivo Xml

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetReportResultsResponse xmlns="https://myservice">
      <GetReportResultsResult>FileXml</GetReportResultsResult>
    </GetReportResultsResponse>
  </soap:Body>
</soap:Envelope>

Como se pueden dar cuenta, se observan prefijos en cada nodo, este prefijo es “soap” y el archivo Xml contiene el namespace para usar este prefijo, pero al momento de seleccionar un nodo de la siguiente manera:

XmlDocument document = new XmlDocument();
document.Load(@"../../FileXml.xml");

XmlNodeList nodes =
    document.SelectNodes(@"soap:Body");

Visual Studio nos informa de la siguiente excepción:

“Exception: Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.”

Esto se debe a que no se reconoce el nombre de espacio que contiene nuestro archivo Xml, para solucionarlo debemos agregar un administrador de namespace y agregarlo a la selección de la siguiente manera:

Solución:

XmlNamespaceManager nms =
    new XmlNamespaceManager(document.NameTable);
nms.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope");

XmlNodeList nodes =
    document.SelectNodes(@"soap:Body",nms);

Con esto es suficiente para poder seleccionar nuestros nodos, y así manipularlo a nuestro antojo. Espero que les ayude este tip, así que saludos….. :D

Saludos,

Norberto :P

Etiquetas de Technorati: ,,,




[WTF] Declarando un un propiedad den VB.NET

29 10 2009

Buenas,

Otro ejemplo de lo que no debemos hacer :P

“Declarando una propiedad en VB.NET”

 

Public Property IsActivo() As Int32
    Get
        Return _isActivo
    End Get
    Set(ByVal value As Int32)
        value = Me._isActivo
    End Set
End Property

Este es más bueno que el anterior jajaja

Saludos.

Etiquetas de Technorati: ,




[WTF] Localizando un sitio con ASP.NET

29 10 2009

Aquí el primero de varios post, donde colocare código que resulta gracioso. Claro estos se podría clasificar como chistes para desarrolladores.

Aquí el primero titulado “Localizando un sitio con ASP.NET”

 

Select Case cl_Culture.getTagCulture
    Case "en-US"
        Me.lblFieldGpo.Text = "Group:"
        Me.lblFieldGpo2.Text = "Group:"
    Case Else
        Me.lblFieldGpo.Text = "Grupo:"
        Me.lblFieldGpo2.Text = "Grupo:"
End Select

 

Apoco no es chulo este código, cabe mencionar que solo sirve para Ingles y Español xD.

Por cosas como estas es que adoro ser desarrollador. :D . No les digo quien escribió esto pa’ no quemarlo

Saludos.

Etiquetas de Technorati: ,




[ASP.NET] Enviar un mail desde una cuenta de Hotmail, Live

28 10 2009

Buenas,

Este es un tema quizá muy leído en internet, pero aquí un ejemplo rápido de como hacerlo desde una una cuenta de Hotmail, Live. Solo es cuestión de configurar algunas propiedades de nuestro cliente smtp.

Para hacer la prueba debemos crear un nuevo sitio web, agregamos un botón y en el evento click del botón agregamos el siguiente código.

protected void btnSendMail_Click(object sender, EventArgs e)
{
    MailMessage mail = new MailMessage();
    mail.To.Add("norberto.rojas@live.com");
    mail.To.Add("north_18rojas@hotmail.com");
    mail.From = new MailAddress("norberto.rojas@live.com");
    mail.Subject = "Mail usando Live";

    string Body = "Hola" + Environment.NewLine +
                  "Este es un mail de prueba..." + Environment.NewLine +
                  "Utilizando live in ASP.NET";
    mail.Body = Body;

    mail.IsBodyHtml = true;

    SmtpClient smtp = new SmtpClient();
    smtp.Host = "smtp.live.com";
    smtp.Port = 587;
    smtp.UseDefaultCredentials = false;
    smtp.Credentials = new System.Net.NetworkCredential
    ("tucorreo@live.com", "tucontraseña");
    smtp.EnableSsl = true;
    smtp.Send(mail);

}

Esto es lo único que necesitamos para envía un mail, como se darán cuenta en la siguiente imagen el correo fue enviado correctamente y recibido en tiempo.

image

image

 

Bueno, espero que les sea de utilidad.

Saludos.

Etiquetas de Technorati: ,,,,




[LINQ] SELECT en LINQ To SQL

10 10 2009

Buenas,

Aquí el primero de unos post rápidos de LINQ TO SQL, para aquellos que estamos aprendiendo :D . Comenzamos con un SELEC

 

1.- Select * from —-> xD

T-SQL

SELECT * FROM dbo.EntradasBlog

LINQ TO SQL

VB.NET

Dim [select] = From e In sel.EntradasBlogs Select e

C#

var selec = from e in sel.EntradasBlogs
                          select e;

 

2. Select —> en un solo campo

T-SQL

SELECT Titulo FROM dbo.EntradasBlog

LINQ TO SQL

VB.NET

Dim [select] = From e In sel.EntradasBlogs Select e.Titulo

C#

var selec = from e in sel.EntradasBlogs select e.Titulo;

3.- Select —> obtenido el primer registro

T-SQL

SELECT TOP 1 Titulo FROM dbo.EntradasBlog

LINQ TO SQL

VB.NET

Dim [select] = (From e In sel.EntradasBlogs Select e.Titulo).First

C#

var selec = (from e in sel.EntradasBlogs
                         select e.Titulo).First();

4. Select —> un registro en especifico

T-SQL

SELECT Titulo FROM dbo.EntradasBlog
WHERE id = 1

LINQ TO SQL

VB.NET

Dim [select] = sel.EntradasBlogs.SingleOrDefault _
                (Function(c) c.Id = "0000000001")

donde ser es:

Dim sel As New DemosDataContext

ó

Dim [select] = (From e In sel.EntradasBlogs _
                     Where e.Id = "0000000001" _
                       Select e.Titulo).Single

C#

var selec = sel.EntradasBlogs.SingleOrDefault(c
                        => c.Id == "0000000001");

ó

var selec = (from e in sel.EntradasBlogs
             where e.Id == "0000000001"
             select e).Single();

5. Select —> un numero especifico de registros

T-SQL

SELECT TOP 3 * FROM dbo.EntradasBlog 

LINQ TO SQL

VB.NET

Dim [select] = (From e In sel.EntradasBlogs).Take(3)

C#

var selec = (from e in sel.EntradasBlogs
                         select e).Take(3);

6. Select—> con subquerys

T-SQL

SELECT Titulo FROM dbo.EntradasBlog
WHERE id = (SELECT id from dbo.Entradas
            WHERE (id = '0000000001'))  

LINQ TO SQL

VB.NET

Dim [select] = _
        (From e In sel.EntradasBlogs _
        Where (From en In sel.Entradas _
               Where (en.id = "0000000001") _
               Select en.id).Contains(e.Id) _
        Select e.Titulo)

C#

var selec = from e in sel.EntradasBlogs
                        where (
                                from en in sel.Entradas
                                where en.id == "0000000001"
                                select en.id
                                ).Contains(e.Id)
                        select e.Titulo;

Bien parece que estos son algunas maneras de realizar Select desde LINQ2SQL, ya en otros post’s iremos hablando sobre otras sentencias.

Etiquetas de Technorati: ,,,




[WCF] Consumiendo un Servicio de WCF

6 10 2009

Buenas,

Ya es un poco tarde y me he estado peleando un buen rato con un error al consumir un servicio de WCF. Cree mi servicio agregue mi referencia y cuando creo objeto de dicho servicio me muestra el siguiente mensaje:

Could not find default endpoint element that references contract ‘Service.IService’ in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element.

Indague in poco en Google y todos me dicen que se trata de que debo poner mi nombre de espacios antes del contrato, pues bien lo hice y no resulto nada :S. Así que comencé a revisar el Webconfig de mi Servicio (Todo bien), luego el app.config de mi aplicación que consume el Servicio (Todo bien, esta aplicación es una librería).

Luego mi aplicación principal también tiene un app.config (esta es una aplicación de WPF), y vi que este archivo no contenía nada :S y al parecer Visual Studio estaba buscando en ese archivo el contrato :P , y lo que hice es copiar el contenido que genera el asistente en el app.config de mi aplicación de librería y pasarlo al app.config de mi  aplicación WPF y listo, todo funciona correctamente. :D

Por si no me explique aquí unas imagenes.

1.- Muestra el error:

image

2.- Esta es la estructura de mi solución, solo necesito mover mi archivo app.config.

image

Solo basta con arrastrar mi app.config desde mi proyecto cliente al principal, y listo. Espero que les sea de utilidad y no pierdan tanto tiempo como yo :P

Etiquetas de Technorati: ,,




[WPF]Agregar referencia de ensamblado en código XAML

25 09 2009

Buenas,

Aquí un post rápido de como hacer lo que menciona el titulo del post. Este escenario se presenta cuando creamos un proyecto de tipo “Biblioteca de clases” y queremos agregarlo a nuestro Ventana.xaml o control, etc, pero desde código.

Debemos tener primero que cuando creamos el proyecto de biblioteca de clases contener un nombre de espacio para nuestras clases. una es esto basta con agregar la siguiente línea de código en la definición de nuestra ventana:

xmlns:local="clr-namespace:MiNombreDeEspacio;assembly=MiClase"

en donde local será el nombre de nuestro espacio de nombres dentro del código XAML y cuando lo usemos seria de la siguiente manera:

local:MessageListener.Instance

Bueno espero que le sirva este post para no perder tiempo :D

Etiquetas de Technorati: ,




[IE8] Asegúrate de que tus sitios Web sean Compatibles con IE8

20 09 2009

Buenas,

En esta semana me he encontrado con este detalle en el desarrollo de un sitio para la empresa en donde trabajo, así que me puse a investigar un poco y me he encontrado con una serie de recursos muy interesantes para asegurarnos que nuestros sitios sean compatibles con la ultima versión de IE.

El más completo de este recurso es el que enlazo a continuación:

http://support.microsoft.com/default.aspx/kb/956197

El cual se titula:

Es posible que algunos sitios web no se muestren o funcionen correctamente en Windows Internet Explorer 8

Espero que si tiene algunos problemas, revisen este articulo y salgan de problemas.

Etiquetas de Technorati: ,




[C#] Pirámide iterativa

7 09 2009

buenas,

Pues yo aquí de ocioso, y perdiendo el tiempo un rato, me encontre con un post de una piramide iterative en C++, la verdad es que hace mucho que no programo en C++, así que le di una miradita rápida al código y pense…”creo que el desarrollador de este código se complico un poco colocando unas validaciones de más”, y luego…”porque no hacer lo en C#”, (C# es mi lenguaje favorito :D ), aquí el enlace con el código en C++

http://jmonroy.wordpress.com/2009/09/03/piramide-iterativa-c/

Y aquí mi código:

namespace PiramideIterativa
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Valor Inicial: ");
            int valorInicial = int.Parse(Console.ReadLine());
            Console.Write("Tamaño: ");
            int tamaño = int.Parse(Console.ReadLine());

            for (int i = 1; i <= tamaño; i++)
            {
                Console.SetCursorPosition(25 - i, i + 1);
                for (int j = 1; j <= (i * 2) - 1; j++)
                {
                    Console.Write(valorInicial);                    

                    if (j <= (i - 1))
                    {
                        valorInicial = valorInicial * 2;
                    }
                    else if(j != (i * 2 -1))
                    {
                        valorInicial = valorInicial / 2;
                    }
                }
            }
            Console.ReadLine();
        }
    }
}

Bueno este es otro post rápido, ya me voy a comer.

Saludos

Etiquetas de Technorati: ,,




[Games] HALO 3 ODST

6 09 2009

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Etiquetas de Technorati: ,





[Vista] Problema con explorador de Windows Vista ‘dejo de funcionar’

3 09 2009

Buenas,

Otro post rápido, si les ocurre este problema al dar clic-derecho sobre algún archivo o carpeta en el explorador de Windows y este se queda atorado y no responde, aquí el como solucionarlo. (hasta el momento a mi me funciona).

Bien hay que bajarse una herramienta que nos muestra los programas instalados en nuestra máquina con todas las características aquí el link:

http://www.nirsoft.net/utils/shexview.html

Una vez que lo bajan y ejecutan nos muestra la lista de los programas instalados, lo que yo hice, fue buscar los programas que no perteneces  Microsoft y checar cuales contienen Menú contextual, y los desactive (esto es presionando F7) y listo, con esto el explorador ya no debe de fallar. Se supone que el problema es que esos menús contextuales no son compatibles y causan errores, espero que les sea de utilidad.

Saludos.





[Word] Saber el total de páginas en un documento

3 09 2009

Otro post rápido, para contestar al comentario de un lector del blog…

“Primero, quiero agradecer que comenten, esto me ayuda a seguir posteando y claro a ustedes a seguir leyendo para compartir información, pero a lo que voy.”

Para saber el total de páginas la clase Microsoft.Office.Interop.Word.Application nos provee de una instrucción, pero para entender mejor esto… realice una demo rápida en un proyecto de tipo Console Application, aquí el código:

 

Sub Main()
    'Instancia de Word
    Dim Word As New Microsoft.Office.Interop.Word.Application

    'Abrimos un documento
    Word.Documents.Open("Ruta de tu documento")
    Word.Application.Visible = True
    Word.WindowState = WdWindowState.wdWindowStateMaximize

    'Mostramos el total de páginas del documento
    Dim totalPaginas As String = String.Empty

    totalPaginas = Word.Selection.Information(WdInformation.wdNumberOfPagesInDocument).ToString

    Console.WriteLine("El documento {0} contiente {1} paginas", Word.ActiveDocument.Name, totalPaginas)

    Console.WriteLine("preciona la tecla 'X' para cerrar el documento")

    Dim cerrar As Char = Console.ReadLine

    'Cerramos el archivo sin guardar cambios
    Select Case cerrar
        Case "X"
            Word.ActiveDocument.Close(SaveChanges:=False)
            Word.Application.Quit()
        Case "x"
            Word.ActiveDocument.Close(SaveChanges:=False)
            Word.Application.Quit()
    End Select

    Console.ReadLine()
End Sub

Creo que es muy fácil de entender, y si tienen alguna duda, ya saben que pueden comentar y si tengo la respuesta seguro lo poste. Como es otro post rápido aquí lo doy por terminado :P

Nota: no se les olvide agregar la referencia a la clase Microsoft.Office.Interop.Word.Application y después hacer su respectivo Imports:

Imports Microsoft.Office.Interop.Word

Saludos.

Etiquetas de Technorati: ,,,




[IE8] Múltiples sesiones en un mismo sitio, gracias IE8

31 08 2009

Seguramente muchas veces hemos querido hacer esto, no lo nieguen, pero estoy seguro que muchos no lo pudieron hacer, pero gracias a una de las nuevas características de IE, esto es posible. Esto es gracias a la posibilidad de crear una nueva sesión, que básicamente nos crear un nuevo conjunto de cookies que no interviene con las de otra sesión, recuerden que en las cookies se guarda las sesiones, como hacemos esto:

image

Del menú Archivo seleccionar Nueva seion y listo, se abre una nueva sesión de nuestro internet explorer, en donde podemos loguearnos con otro usuario, muy útil para la fase de pruebas de nuestros sitios :P

Etiquetas de Technorati: ,




[IE8] Tag de compatibilidad para tus sitios

31 08 2009

Buenas,

Últimamente estoy muy ocupado con el trabajo, pero aquí de nuevo un post rápido ahora sobre la compatibilidad de nuestros sitios con IE8. Para iniciar identificamos que nuestro sitio no es compatible con IE8 si observamos este icono en el explorador:

image

Bien, nos vamos a nuestra página y en el código HTML dentro del Head colocamos esta línea:

<meta http-equiv="X-UA-Compatible" content="IE=7" />

Listo, este tag es mejor conocido como tag de compatibilidad de IE8, que básicamente le dice al navegador que interprete la página como si fuera IE7. En mi caso para no estar colocando este tag en cada página, lo realizado desde una página maestra incorporando el tag en el header y listo :D





[LINQ] Ejecutar Order By And Distinct en un mismo Query

31 08 2009

Buenas,

Otro post rápido, bien usando LINQ To SQL  me encontré con un detalle, si escribo algo así:

Dim var = From org In Organismos _
       Join es In Estados On es.Id Equals org.IdEstado _
       Order By org.Nombre _
       Select org

Todo funciona correcto, pero si quiero agregarle un Distinct como siguie:

Dim var = (From org In Organismos _
       Join es In Estados On es.Id Equals org.IdEstado _
       Order By org.Nombre _
       Select org).Distinct

Esto deja de funcionar :S, bien, parece que el problema es del Framework de LINQ, o algo hay al momento de crear el query, pero a lo que voy, para poder solucionar esto debemos usar un Order By Compare como sigue:

 

Dim var = ((From org In Organismos _
       Join es In Estados On es.Id Equals org.IdEstado _
       Select org).Distinct).OrderBy(Function(orga) orga.Nombre)

Y listo, ya funciona correctamente :D

Bien, como es un post rápido, pues ya lo dejo y seguiré trabajando :P , aquí una buena rolita que escucho mientras escribo el post

Etiquetas de Technorati: ,,




[Errores] Error al cargar el paquete ‘Visual Web Developer HTML Source Editor Package’

27 08 2009

Seguramente esto les sucede a muchos de los usuarios de Visual Studio (en sus diferentes versiones), ya antes había comentado que este error por lo regular se corrige ejecutando la siguiente instrucción:

devenv /resetskippkgs en la ruta: C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE> como se ven en la siguiente figura:

image

Bien, pues esto al parecer no es la solución correcta, ya que esto me había pasado con el editor de XAML, y en ese momento así lo solucione, pero ahora me paso con el editor de HTML y después de instalar el Service Pack 1 de SQL Server 2008. Este problema ocurre cuando los idiomas de Windows y de Visual Studio son diferentes, en muchos lugares de internet dicen que reinstales VS 2008 con el idioma correcto y todo ese rollo, pero estarán de acuerdo que esto es muy tedioso y existe otra manera de hacer, más fácil y más rápido, que es la siguiente:

En el Visual Studio nos vamos a Herramientas->Opciones->Entorno->Configuración Internacional y ahí seleccionar el idioma que corresponde a la instalación de Visual Studio.

En mi caso tengo instalado Windows 7 en Ingles, y Visual Studio 2008 en Español, tengo que seleccionar el Idioma español en el Visual y no el que dice: Igual que en Microsoft Windows, como se ve en la figura:

image

Despúes de esto hacemos click en Aceptar y listo esto debe de funcionar, aunque si no funciona, es porque seguro cuando les muestra el mensaje dieron que No a la opción de cargar en un futuro el paquete, por cualquier cosa, ejecuten de nuevo: devenv /resetskippkgs para que esto funcione, y como ven no es necesario reinstalar ni Windows ni mucho menos Visual Studio, espero que les sirva esto y no pierdan tanto tiempo. :D

Saludos.

Etiquetas de Technorati: ,,




[ASP.NET] Validar un Dropdownlist dentro de un UpdatePanel

10 08 2009

Este caso se da mucho cuando tenemos algo como el siguiente formulario:

image

En donde el primer ddl (dropdownlist) se llena con un origen de datos (sqldatasource, objectdatasource, etc) y según el país que seleccione se llena el estado, esto dentro de un UpdatePanel para que solo se refresque estos controles de nuestra página.

Aquí tenemos que validar que el usuario seleccione una opción que no sea la predeterminada, para esto existen varias maneras de hacerlo, aquí un post de como hacer esto:

http://geeks.ms/blogs/rduarte/archive/2008/10/19/validar-dropdownlist-con-requiredfieldvalidator-y-customvalidator.aspx

Solo que con alguna de estas opciones dentro del UpdatePanel no funciona, ¿por qué?, la verdad no lo sé con exactitud, por eso les ofrezco esta otra solución, yo valido los ddl con un CompareValidator de la siguiente manera:

 

<asp:DropDownList ID="ddlPais" runat="server" Width ="250px"
                  AutoPostBack="True" DataTextField="Nombre"
                  DataValueField="Id" AppendDataBoundItems="True" >
</asp:DropDownList>
<asp:CompareValidator ID="cvPais" runat="server"
            ControlToValidate="ddlPais" Display="Dynamic"
            Text="<strong>*</strong>" SetFocusOnError="true"
            Type="Integer" Operator="GreaterThan"
            ValueToCompare="0" ValidationGroup="valPaso1"></asp:CompareValidator>
                   

Y lleno los siguientes ddl en su respectivo evento DataBound para el valor por Default, y en el evento change lleno los datos correspondientes a la selección del ddl anterior:

 

Protected Sub ddlPais_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlPais.DataBound
    Me.ddlPais.Items.Insert(0, New ListItem("--Seleccione un País--", 0))
End Sub

Protected Sub ddlPais_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlPais.SelectedIndexChanged
    'Aquí llenamos el ddl estado con el valor seleccionado del ddlPais
End Sub

Espero que esto les sea de utilidad.

Saludos.