mayo 2009 - Artículos
Los chicos del grupo de usuarios Mobilenug han organizado el 1er concurso de desarrollo sobre Teléfonos Windows. Junto con Microsoft, el Centro de Innovación en Movilidad de Microsoft y con el patrocinio de Vodafone y SE.
Categoría general: Aplicaciones más innovadoras
* 1er premio: 10.000 euros
* 2º Premio: 6.000 euros
* 3er Premio: 3.000 euros
Además, se otorgarán otros 17 premios formados por una Xbox 360 con un pack de juegos, y diferentes herramientas de desarrollo de Microsoft.
o Categoría especial Vodafone a la mejor aplicación para la experiencia del usuario profesional, dotada con 7.000 euros. Vodafone además comercializará conjuntamente las aplicaciones para profesionales premiadas.
o Categoría especial Sony Ericsson a la aplicación mejor integrada con los paneles del terminal Xperia X1, dotada con 7.000 euros
o Además, las siguientes 20 aplicaciones elegidas serán reconocidas con un obsequio.
Fechas:
Preinscripciones hasta el 20 de Julio
Entrega de las aplicaciones hasta el 3 de Agosto
Podéis obtener toda la información en http://www.mobilenug.com

Después de publicar muchos ejemplos y tener que enlazar muchos datos en mis ejemplos ASP.NET echaba de menos poder hacer un enlace simple a mis controles ASP.NET sin tener que hacer clases y luego hacer una lista de las mismas para poder utilizar el DataSource sin problemas.
Para hacer un enlace normal, lo primero tenemos que hacer es un objeto personalizado y luego utilizar una lista genérica para el enlace a datos.
Ejemplo uso normal con un tipo anónimo:
var Item = new { Key = 1, Value = "Coche" };
var Lista = (new[] { Item }).ToList();
Lista.Add(new { Key = 2, Value = "Moto" });
DataList1.DataSource = Lista;
DataList1.DataBind();
Luego en nuestro control enlazado a datos ASP.NET tenemos el enlace al origen del registro:
<ItemTemplate>
<asp:CheckBox runat="server" Text='<%# Eval("Value") %>' />
</ItemTemplate>
Pero podemos utilizar un truquito para enlazar directamente nuestras listas genéricas sin que tengan que contener objetos.
Ejemplo 1: con un diccionario.
Dictionary<int, string> diccionario = new Dictionary<int, string>();
diccionario.Add(1, "Coche");
diccionario.Add(2, "Moto");
Solo tenemos que especificar que campo es la clave y cuál es el valor.
<Columns>
<asp:BoundField DataField="Key" HeaderText="Key" />
<asp:BoundField DataField="Value" HeaderText="Value”/>
</Columns>
Ejemplo 2: Con una lista.
List<string> lista = new List<string>();
lista.Add("Coche");
Y el enlace a datos especificamos que utilice los datos directamente del DataItem:
<ItemTemplate>
<asp:CheckBox ID="chkItem" Text='<%# Container.DataItem %>' />
</ItemTemplate>
Dos ejemplos simples pero muy eficaces.

Otros recursos de controles enlazados a Datos:
http://msdn.microsoft.com/es-es/library/aa479321.aspx
http://geeks.ms/blogs/lruiz/archive/2007/03/16/asp-net-2-0-el-m-todo-bind.aspx
http://weblogs.asp.net/scottgu/archive/2003/11/03/35645.aspx
Espero que os sea útil ;-)
Saludos.
Hacía ya tiempo que no dedicaba ni un solo minuto a preparar una entrada para el blog, pero hoy me he plantado y le voy a dedicar un poco para solucionar una de las dudas que suelen salir en los foros de MMSDN.
Como seleccionar todos los checkBox de un DataList o un GridView, esto que puede parecer muy sencillo se nos puede complicar bastante si utilizamos directamente JavaScript, pero con JQuery solo necesitaremos una línea de código “Si, solo una línea de código”.
Supongo que a estas alturas la gran mayoría ya conoce que es el la librería Jquery y las ventajas que nos ofrece al escribir nuestro código de cliente y sobre todo porque ahora nos permite tener inteligencie, sumando más potencia a esta productiva librería que os la podéis bajar desde http://jquery.com .

Lo primero que voy a hacer es crear una lista para enlazar los datos en el Datalist. No voy a entra en la mejor forma de crear datos ni validarlos simplemente utilizaré un tipo anónimo para realizar el ejemplo lo más simple y rápido posible ;-).
El control en la página estará configurado de la siguiente manera:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var Item = new { Key = 1, Value = "Coche" };
var Lista = (new[] { Item }).ToList();
Lista.Add(new { Key = 2, Value = "Moto" });
Lista.Add(new { Key = 3, Value = "Avión" });
DataList1.DataSource = Lista;
DataList1.DataBind();
}
}
Un checkBox en la cabecera para seleccionar todos los registros y cada ítem contará con otro checBox para seleccionar cada registro. Luego tendremos un botón para mostrar desde el servidor que registros tenemos seleccionados en la lista.

Luego añadiré el evento onclick al checkBox de la cabecera, para que lance un evento JavaScript y seleccione todos los del control.
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Header)
{
CheckBox chk = (CheckBox)e.Item.FindControl("chkAll");
if (chk != null)
chk.Attributes.Add("onclick","SelectAll('"+DataList1.ClientID+"', this);");
}
}
Codigo:
A esta función javascript le pasaremos dos parámetros, el identificador de la lista a recorrer y el checkBox que lanza el evento.
Finalmente el código script con JQuery que marcara todos los checkbox:
Codigo:
// Archivo JScript
/// <reference path=jquery.intellisense.js"/>"
function SelectAll( tb, chk ) {
var check = chk.checked;
$("#" + tb + " tr td :checkbox").each(function(){
this.checked = check;
});
}
Como podéis comprobar jQuery es muy potente, tan sólo con el identificador de la lista podemos buscar todos los checkbox que hay en las rows y luego con un each modificar el estado igualándolo al del checkbox que ha lanzado el evento. En el ejemplo he utilizado un Datalist y en GridView para que veais que se puede hacer con cualquier control.
Espero que os sea útil este ejemplo. 
Saludos.
Muy buen artículo de Enrique Ortuño sobre Microsoft y el Software libre...
Hace mucho tiempo que he querido escribir esta entrada, mas exactamente desde que tuve el honor de conocer a Richard Stallman y dar una conferencia sobre este tema, después de haber dado la charla la anterior semana, como les comentaba en mi anterior entrada, he aquí la misma, que explica como va todo este asunto de Microsoft y el software libre. La conferencia estuvo precedida de ciertos momentos en los que amigos y conocidos me escribían y me llamaban para decirme: Como es eso de que Microsoft y el software libre en una misma conferencia? Seguro vas a atacar a Linux y al software Libre! Andáte con chaleco antibalas que seguro alguien te pega un balazo! Te vas a hacer odiar….. etc, etc.
Artículo completo en http://geeks.ms/blogs/eortuno/archive/2009/04/30/microsoft-amp-software-libre-la-presentaci-243-n.aspx
Megustaría saber las opiniones de todos sobre este tema.
Saludos.