Mis experiencias programando con Visual Studio, ASP, VB, C#... If you are interested of any article in other language please contact me.
miércoles, 27 de octubre de 2010
Nuevo Blog en GEEKS
Ahora voy a empezar a escribir en GEEKS.MS . Espero Leeros por alli y que me sigais leyendo.
Lo primero que quiero hacer es dar las gracias por el Blog tanto a Josue Yeray, como a Rodrigo, por darme la oportunidad de añadir mi granito de arena a Geeks.
Este blog va a tratar de mis experiencias programando en Tecnologías Microsoft, desde VB.Net y C# hasta SilverLight, aplicaciones Windows, Web, Algo para Mobile, Bases de Datos, Controles personalizados...
Espero que os guste, y leer vuestros comentarios.
Un saludo a todos!
Un saludo.
martes, 19 de octubre de 2010
MVC3: Validación de Elementos HTML condicional
Hasta ahora, tanto en aplicaciones WebForms como en ASP.NET MVC1 y ASP.NET MVC2, si queríamos dejar de comprobar la introducción de código HTML en alguno de los campos de nuestros formularios, teníamos que permitirlo en todos los campos, y a través de nuestras propias validaciones tratar de no permitirlo (javascript o código servidor).
En la Beta de MVC3, ha aparecido una modificación en el Atributo ValidateInput, que nos permite excluir algunos campos a la hora de validar nuestro formulario.
El nuevo parámetro del atributo, se llama Exclude, y nos permite introducir distintos campos de nuestro formulario separados por comas. Aquí va un ejemplo de la sintaxis:
[ValidateInput(true,Exclude="ContentPost")]
public ActionResult CreatePost()
{
//Contenido de la vista.
}
Espero que os sea de utilidad!
Saludos.
PD: se me olvido citar la fuente WhitePaper MVC 3.
lunes, 18 de octubre de 2010
CODEPLEX: TabControl con mejoras
Desde las versiones antiguas de Visual Studio, me he encontrado con un pequeño problema a la hora de trabajar con el TabControl: Ocultar / Mostrar las TabPages.
Pese a que el control TabControl, presenta una propiedad “TabPageCollection” que alberga todas las TabPages del Control, y a su vez cada TabPage tienen unos métodos Hide y Show, su funcionamiento no es el que “yo” desearía. Me explico:
- Si yo llamo al método Hide de un TabPage, me gustaría que este TabPage no fuera visible de cara al usuario.
miércoles, 13 de octubre de 2010
MVC: Helper WebGrid(3)
lunes, 11 de octubre de 2010
MVC3: Helper WebGrid (2)
Como os indicaba el otro día, ha salido una Beta de MVC3, y han agregado el Helper WebGrid.
viernes, 8 de octubre de 2010
MVC3: Helper WebGrid
Como todos sabréis hace 2 día salieron grandes novedades en Microsoft, con la Beta de MVC3, NuPack y WebMatrix Beta 2 (Anuncio de ScottGu).
Este post va dedicado a un Helper agregado en MVC3 que no estaba en MVC2: WebGrid.
miércoles, 29 de septiembre de 2010
SL4: Problema al definir un estilo en DataGridColumnHeader
Llevo unos días de aprendizaje con MVC y también me he metido a aprender a manejar SILVERLIGHT 4 con VS 2010.
A través del BLOG de Josué Yeray, he ido cogiendo muchos conceptos que también aplican a WPF.
Bueno a lo que iba.
Me he encontrado una problemática un tanto curiosa a la hora de intentar establecer los estilos dentro de un Control DataGrid.
lunes, 20 de septiembre de 2010
Que son los Atributos y su uso en .NET
Llevo un tiempo OFF del Blog, porque ando haciendo un proyecto, que espero que vea la luz dentro de poco, y sobre el cual publicaré algunos artículos en el BLOG.
Os traigo un pequeño ejemplo hecho con MVC2 y XML.
Este ejemplo viene a servir para destacar el uso de los atributos en el código.
Si entrais aquí , podréis ver más en detalle la definición de los atributos.
lunes, 16 de agosto de 2010
Regreso de las vacaciones
Me gustaria que me dejarais comentarios acerca de los temas que os gustaria que vaya tratando en el blog.
Un saludo a Todos!
lunes, 5 de julio de 2010
Entity Framework (3 de N): ObjectContext y ObjectSet
En el momento en el que generamos un EDMX, y agregamos nuestras Tablas de Datos que pasan a ser entidades del módelo, VS genera el fichero XXX.Designer.VB.
Este fichero va a contener, toda la información relativa al contexto de manejo de los datos, las entidades, y las asociaciones existentes entre las distintas entidades.
viernes, 2 de julio de 2010
Entity Framework (2 de N)
Si recordais el primer mensaje, puse una imagen con las tablas y con sus relaciones. Está imagen está tomada desde VS con el origen de datos que definimos.
Como podeis apreciar en la imagen, vemos 4 tablas que vienen de la Base de Datos y han sido convertidas en Entidades dentro de nuestro modelo.
jueves, 1 de julio de 2010
Entity Framework (1 de N)
Entity Framework (a partir de aquí EF) permite la interactuación entre código .NET y un modelo de datos relacional de manera bastante agil y sencilla.
miércoles, 30 de junio de 2010
Detectar Cambios en una Clase
Ya que ando dando una formación de VB2008, he estado dando un breve ejemplo de LINQTOSQL.
Uno de mis alumnos me pregunto: ¿Cómo puedo determinar si los controles que tengo en un formulario han cambiado?
jueves, 13 de mayo de 2010
Obtención del Esquema de una Base de Datos
lunes, 19 de abril de 2010
A la presentación de VS2010 de Madrid
Saludos!
martes, 13 de abril de 2010
Pequeño Tip de VS2010
Seleccionamos el valor origen y lo copiamos(Ctrl + C)
Seleccionamos con el TIP las lineas.
Pegamos lo obtenido al principio (Ctrl + V)
Este tip es válido tanto en C# como en VB. Tiene ventaja C# por la sintaxis!
El articulo original lo podeis encontrar aquí.
Un saludo.
lunes, 12 de abril de 2010
Versiones Express de VS2010 disponibles
martes, 30 de marzo de 2010
Training Kit Windos Phone 7
Os dejo un enlace al Training Kit de Windows Phone 7.
Para los que no lo sepan, esta disponible para VS2010 RC, unicamente se podrá pogramar en C# (de momento), y las aplicaciones van a estar basadas en SilverLigth.
Saludos
Videos interesantes acerca de SilverLight
Videos
PD: Espero que me dejen aplicarlo en un modulo de mi proyecto.
viernes, 26 de marzo de 2010
MAP (Microsoft Active Professional)
"El equipo de Microsoft España quiere reconocer tu esfuerzo constante por participar activamente en nuestros programas de formación y por estar pendiente durante el ultimo año de nuestra tecnología.
Valoramos tu compromiso, que hace que te encuentres entre el 5% mas actualizado de una de las comunidades técnicas mas importantes a nivel mundial. Por ello queremos...."
Saludos.
miércoles, 24 de marzo de 2010
Añadir Eventos a Control creado en Runtime
Voy a poner un pequeño ejemplo de como asignarle un manejador de eventos (handler) a un control y como utilizarlo.
EN VB
'Esto se agregará donde se cree el control
Dim cmdBotonEjemplo as New Button()
cmbBotonEjemplo.Name="BotonN"
cmbBotonEjemplo.Text="Boton de Ejemplo"
Addhandler cmdBotonEjemplo.Click, AddressOf NombreEventoClick
me.Controls.Add(cmdBotonEjemplo)
'Esto se escribirá en la clase.
Private Sub NombreEventoClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
EN C#
//Esto se agregará donde se cree el control
Button cmdBotonEjemplo = new Button();
cmdBotonEjemplo.Name="BotonN";
cmbBotonEjemplo.Text="Boton de Ejemplo";
cmdBotonEjemplo.Click += new System.EventHandler(NombreEventoClick);
this.Controls.Add(cmdBotonEjemplo);
//Esto se escribirá en la clase.
private void NombreEventoClick(object sender, EventArgs e)
{
}
Con esto ya tendremos creado nuestro manejador de eventos para el botón creado en runtime.
Esto se puede realizar con cualquier control y cualquier evento, lo único que tendremos que tener en cuenta es la firma de los eventos a la hora de crearlos.
Saludos.
jueves, 18 de marzo de 2010
Examenes Beta de Certificacion VS 2010
http://blogs.technet.com/betaexams/default.aspx
En el que hablan de la disponibilidad de hacer un examen de certificacion Beta sobre VS 2010 sobre diversas tecnologias.
El coste del examen es gratuito ya que aportan un codigo promocional de descuento.
Espero que os interese.
Un saludo.
lunes, 25 de enero de 2010
Formatear con separadores de miles una cadena
Para que funcione correctamente ha de invocarse a la funcion desde el evento KeyUP
CODIGO C#
public string Puntos(string strValor, int intNumDecimales) { string strAux = null; string strComas = null; string strPuntos = null; int intX = 0; bool bolMenos = false; strComas = ""; if (strValor.Length == 0) return ""; strValor = strValor.Replace(Application.CurrentCulture.NumberFormat.NumberGroupSeparator, ""); if (strValor.Contains(Application.CurrentCulture.NumberFormat.NumberDecimalSeparator)) { strAux = strValor.Substring(0, strValor.LastIndexOf(Application.CurrentCulture.NumberFormat.NumberDecimalSeparator)); strComas = strValor.Substring(strValor.LastIndexOf(Application.CurrentCulture.NumberFormat.NumberDecimalSeparator) + 1); } else { strAux = strValor; } if (strAux.Substring(0, 1) == Application.CurrentCulture.NumberFormat.NegativeSign) { bolMenos = true; strAux = strAux.Substring(1); } strPuntos = strAux; strAux = ""; while (strPuntos.Length > 3) { strAux = Application.CurrentCulture.NumberFormat.NumberGroupSeparator + strPuntos.Substring(strPuntos.Length - 3, 3) + strAux; strPuntos = strPuntos.Substring(0, strPuntos.Length - 3); } if (intNumDecimales > 0) { if (strValor.Contains(Application.CurrentCulture.NumberFormat.PercentDecimalSeparator)) { strComas = Application.CurrentCulture.NumberFormat.PercentDecimalSeparator + strValor.Substring(strValor.LastIndexOf(Application.CurrentCulture.NumberFormat.PercentDecimalSeparator) + 1); if (strComas.Length > intNumDecimales) { strComas = strComas.Substring(0, intNumDecimales + 1); } } } strAux = strPuntos + strAux + strComas; return strAux; } private void textBox1_KeyUp(object sender, KeyEventArgs e) { textBox1.Text = Puntos(textBox1.Text, 0); textBox1.Select(textBox1.TextLength, 0); }
CODIGO VB:
Public Function Puntos(ByVal strValor As String, ByVal intNumDecimales As Integer) As String
Dim strAux As String = ""
Dim strComas As String = ""
Dim strPuntos As String = ""
Dim intX As Integer = 0
Dim bolMenos As Boolean = False
If strValor.Length = 0 Then
Return ""
End If
strValor = strValor.Replace(Application.CurrentCulture.NumberFormat.NumberGroupSeparator, "")
If strValor.Contains(Application.CurrentCulture.NumberFormat.NumberDecimalSeparator) Then
strAux = strValor.Substring(0, strValor.LastIndexOf(Application.CurrentCulture.NumberFormat.NumberDecimalSeparator))
strComas = strValor.Substring(strValor.LastIndexOf(Application.CurrentCulture.NumberFormat.NumberDecimalSeparator) + 1)
Else
strAux = strValor
End If
If strAux.Substring(0, 1) = Application.CurrentCulture.NumberFormat.NegativeSign Then
bolMenos = True
strAux = strAux.Substring(1)
End If
strPuntos = strAux
strAux = ""
While strPuntos.Length > 3
strAux = Application.CurrentCulture.NumberFormat.NumberGroupSeparator + strPuntos.Substring(strPuntos.Length - 3, 3) + strAux
strPuntos = strPuntos.Substring(0, strPuntos.Length - 3)
End While
If intNumDecimales > 0 Then
If strValor.Contains(Application.CurrentCulture.NumberFormat.PercentDecimalSeparator) Then
strComas = Application.CurrentCulture.NumberFormat.PercentDecimalSeparator + strValor.Substring(strValor.LastIndexOf(Application.CurrentCulture.NumberFormat.PercentDecimalSeparator) + 1)
If strComas.Length > intNumDecimales Then
strComas = strComas.Substring(0, intNumDecimales + 1)
End If
End If
End If
strAux = strPuntos + strAux + strComas
Return strAux
End Function
Private Sub TextBox1_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
TextBox1.Text = Puntos(TextBox1.Text, 2)
TextBox1.Select(TextBox1.TextLength, 0)
End Sub
Para evitar, que metan en la caja de texto mas de un caracter decimal:
c#
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (textBox1.Text.Contains(Application.CurrentCulture.NumberFormat.NumberDecimalSeparator) && (e.KeyChar == Application.CurrentCulture.NumberFormat.NumberDecimalSeparator))
e.Handled = true;
else
e.Handled = false;
}
VB
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If TextBox1.Text.Contains(Application.CurrentCulture.NumberFormat.PercentDecimalSeparator) And (e.KeyChar = Application.CurrentCulture.NumberFormat.PercentDecimalSeparator) Then
e.Handled = True
Else
e.Handled = False
End If
End Sub