Professional Documents
Culture Documents
Este control es más sofisticado que el DataRepeater, pero menos que el DataGrid.
El DataList se diferencia del DataRepeater porque puede mostrar los datos en una tabla
HTML directamente (sin tenerla que armar con <table…> ). De hecho, el default es que
lo muestre en una tabla HTML.
Otra diferencia es que puede mostrar los items en más de una columna – en contraste el
DataRepeater muestra una sola columna de items…
vbDataList01.aspx
<Script Runat='Server'>
Sub Page_Load( s As Object, e As EventArgs )
miConexion.Open()
miDataList.DataSource = miComando.ExecuteReader()
miDataList.DataBind()
miConexion.Close()
End If
End Sub
</Script>
<asp:DataList
id="miDataList"
Runat="Server">
<ItemTemplate>
<%# Container.DataItem("CategoryName") %>
</ItemTemplate>
</asp:DataList>
</form>
</body>
</html>
Si ve el código fuente de esta página Web (Con la opción View – Source del Navegador)
encontrará lo siguiente – entre todo el código HTML:
<table id="miDataList" cellspacing="0" border="0"
style="border-collapse:collapse;">
<tr>
<td>
Beverages
</td>
</tr>
<tr>
<td>
Condiments
</td>
</tr>
etc.
vbDataList02.aspx
<asp:DataList
id="miDataList"
RepeatLayout="Flow"
Runat="Server">
<ItemTemplate>
<%# Container.DataItem("CategoryName") %>
</ItemTemplate>
</asp:DataList>
1. cellpadding
Espacio en blanco alrededor del texto dentro de una celda. Como una especie de
“colchón”.
2. cellspacing
Espacio en blanco dentro de la línea de división entre las celdas. Si pone un valor
igual a 0, la división es una línea fina; si pone valores mayores, se vuelve como
un marco con la anchura especificada.
3. gridlines
Si tiene líneas divisorias: none, vertical, horizontal, both
vbDataList03.aspx
cellpadding=”10”
cellspacing=”0”
gridlines=”both”
Runat="Server">
<ItemTemplate>
<%# Container.DataItem("CategoryName") %>
</ItemTemplate>
</asp:DataList>
Por default, el DataList comienza a listar verticalmente, hacia abajo, y luego sube y pasa
a llenar la siguiente columna hacia abajo… tipo guía telefónica o columna de periódico.
Si desea que vaya llenando horizontalmente (hacia la derecha), puede controlarlo con el
atributo RepeatDirection
vbDataList03.aspx
cellpadding="10"
cellspacing="0"
gridlines="both"
RepeatColumns="3"
RepeatDirection="Horizontal"
Runat="Server">
<ItemTemplate>
<%# Container.DataItem("CategoryName") %>
</ItemTemplate>
</asp:DataList>
1. OnEditCommand
Es disparado por el evento de un control contenido en el DataList que tiene la
propiedad CommandName con el valor “Edit”
2. OnUpdateCommand
Lo mismo, sólo que con la propiedad CommandName con el valor “Update”.
3. OnDeleteCommand
Lo mismo, sólo que con la propiedad CommandName con el valor “Delete”
4. OnCancelCommand
Lo mismo, sólo que con la propiedad CommandName con el valor “Cancel”
5. OnItemCommand
Cuando no aplica alguno de los casos anteriores.
<Script Runat='Server'>
Sub Page_Load( s As Object, e As EventArgs )
miDataList.DataSource = miComando.ExecuteReader()
miDataList.DataBind()
miConexion.Close()
End If
End Sub
</Script>
<html>
<head>
<title>Categorías</title>
</head>
<body>
<form Runat="Server">
<asp:DataList
id="miDataList"
cellpadding="10"
cellspacing="0"
gridlines="both"
RepeatColumns="3"
RepeatDirection="Horizontal"
OnItemCommand = "escogeCategoria"
Runat="Server">
<ItemTemplate>
<asp:LinkButton
id="miLinkButton"
Text='<%# Container.DataItem("CategoryName") %>'
Runat="Server" />
</ItemTemplate>
</asp:DataList>
<asp:label
id="IndiceCatalogoActual"
Runat="Server" />
</form>
</body>
</html>
vbDataList06.aspx
<!-- vbDataList06.aspx -->
<%@ Import Namespace='System.Data' %>
<%@ Import Namespace='System.Data.SqlClient' %>
<Script Runat='Server'>
Sub Page_Load( s As Object, e As EventArgs )
If Not isPostBack Then
BindData
End If
End Sub
Sub BindData
Dim MiConexion As SqlConnection
Dim MiComando As SqlCommand
miDataList.DataSource = miComando.ExecuteReader()
miDataList.DataBind()
miConexion.Close()
End Sub
</Script>
<html>
<head>
<title>Categorías</title>
</head>
<body>
<form Runat="Server">
<SelectedItemTemplate>
<b><%# Container.DataItem("CategoryName") %></b>
</SelectedItemTemplate>
</asp:DataList>
</form>
</body>
</html>
vbDataList09.aspx
<!-- vbDataList07.aspx -->
<%@ Import Namespace='System.Data' %>
<%@ Import Namespace='System.Data.SqlClient' %>
<Script Runat='Server'>
Sub BindData
Dim MiConexion As SqlConnection
Dim MiComando As SqlCommand
miConexion.Open()
miDataList.DataSource = miComando.ExecuteReader()
miDataList.DataBind()
miConexion.Close()
End Sub
miDataList.EditItemIndex = e.Item.ItemIndex
BindData
End Sub
miDataList.EditItemIndex = -1
BindData
End Sub
miConexion.Open()
miComando.ExecuteNonQuery
miDataList.DataBind()
miConexion.Close()
miDataList.EditItemIndex = -1
BindData
End Sub
miConexion.Open()
miComando.ExecuteNonQuery
miDataList.DataBind()
miConexion.Close()
miDataList.EditItemIndex = -1
BindData
End Sub
</Script>
<asp:DataList
id="miDataList"
cellpadding="10"
cellspacing="0"
gridlines="both"
RepeatColumns="3"
RepeatDirection="Horizontal"
DataKeyField="au_id"
OnEditCommand="editarAutor"
OnDeleteCommand="eliminarAutor"
OnUpdateCommand="actualizarAutor"
OnCancelCommand="cancelarEdicion"
Runat="Server">
<ItemTemplate>
<asp:LinkButton
id="miLinkButton"
Text="Editar"
CommandName="edit"
Runat="Server" />
</ItemTemplate>
<EditItemTemplate>
<b>Apellido:</b><br>
<asp:TextBox
id="lastname"
text='<%# Container.DataItem("au_lname") %>'
Runat="Server" />
<p>
<b>Nombre:</b><br>
<asp:TextBox
id="firstname"
text='<%# Container.DataItem("au_fname") %>'
Runat="Server" />
<p>
<b>Teléfono:</b><br>
<asp:TextBox
id="phone"
text='<%# Container.DataItem("phone") %>'
Runat="Server" />
<p>
<asp:Button
Text="Eliminar"
CommandName="delete"
RunAt="Server" />
<asp:Button
Text="Cancelar"
CommandName="cancel"
RunAt="Server" />
</EditItemTemplate>
</asp:DataList>
</form>
</body>
</html>