Marc Rubiño

ASP.NET, C#, AJAX.NET, JavaScript, etc.

May 2009 - Artículos

Tip/Trick: DataBinding to Generics

Después de publicar algunos artículos 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.

Cross-Posting: http://lonetcamp.com

 

Posted: 20/5/2009 23:10 por Marc Rubiño | con no comments
Archivado en: ,
Tip: Jquery check all CheckBox

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 . 

 

http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/checkAll.jpg

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.

 

 

Posted: 17/5/2009 20:06 por Marc Rubiño | con 5 comment(s)
Archivado en:
LoNetCamp - SQL 2008 & Business Intelligence

Martes 12 de Mayo de 19:00 a 21:00 horas contaremos con la presencia de Salvador Ramos - Microsoft MVP en SQL Server

http://lonetcamp.com/Community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/marckys/BI.jpgMicrosoft Business Intelligence

Analizaremos los requisitos que debe cumplir un verdadero proyecto de BI, como la creación del Data Warehouse y/o los diversos Data Marts, la necesidad de disponer de una base de datos multidimensional que facilite una rápida respuesta a las herramientas analíticas y de reporting. Veremos las herramientas que nos ofrece Microsoft para la creación de estos sistemas, muchas de ellas incluidas en la licencia de SQL Server y que no se suelen utilizar por desconocimiento. Conoce su potencia y anticípate a la competencia.

Novedades en SQL Server 2008.

Comentaremos las novedades más destacadas de SQL Server 2008, para a continuación establecer un debate sobre estas novedades, y sobre la realidad en nuestras empresas (con qué versiones trabajamos, por qué no migramos). También será el momento de plantear cualquier tipo de duda sobre este producto.

 

http://lonetcamp.com/Community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/marckys/n1144972796_5F00_4989.jpg  Salvador Ramos - Microsoft MVP en SQL Server

Hoy en día trabaja ofreciendo servicios de consultoría, formación y mentoring en SQL Server y Business Intelligence.
Tras casi 20 años de experiencia ha participado en muy diversos proyectos, desde pequeñas aplicaciones de escritorio hasta otras de mayor embergadura, como el desarrollo de una contabilidad multidivisa implantada en varias entidades financieras de España. Sus últimos trabajos han sido como director de TI, consultor y formador. Tiene amplia experiencia en proyectos transaccionales, en sectores como banca, medios de pago, comercio mayorista y minorista, hoteles, redes de gasolineras, ... implementados sobre Host IBM y Fujitsu, AS/400, Unix, Windows... También ha participado en algunos proyectos de inteligencia de negocio. Como formador, ha impartido cursos principalmente sobre sistemas AS/400, lenguajes de programación, gestores de bases de datos relacionales (DB2, Oracle y SQL Server) y lenguaje SQL, inteligencia de negocio, Office avanzado... Lleva trabajando con SQL Server desde la versión 6.5.

Paralelamente mantiene el sitio www.helpdna.net , el blog www.sqlserversi.com , es MVP en SQL Server desde 2003 y, cuando el tiempo se lo permite, publica artículos en revistas del sector, colabora en la escritura y revisión de libros, participa en eventos organizados por Microsoft o por grupos de usuarios. Es speaker de INETA España e INETA Latam.

Fundació Universitat Rovira i Virgili "Mas Miarnau"
Av Onze de Setembre, 112 Reus (Tarragona) 43203

http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032415730&Culture=es-ES

La última parte del evento aprovecharemos la experiencia de Salvador Ramos para hacer una mesa redonda y resolver todas las dudas que siempre hemos querido resolver sobre Microsoft SQL y Business Intelligence.

Cross-Posting de http://lonetcamp.com 

Posted: 1/5/2009 10:39 por Marc Rubiño | con 3 comment(s)
Archivado en: