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.