Repeater
Un repeater es un control enlazado a datos cuyo propósito principal es “sólo” mostrar información al usuario en forma de registros, esto es que pretende “repetir” una estructura determinada para n registros (aunque no hay problema en utilizarlo para orígenes de datos de 1 sólo registro). No permite la paginación ni ningún tipo de edición.
One-way data binding significa que solo permite expresiones de enlace a datos con Eval, Bind no está permitido y entonces no podemos utilizar este control para recuperar los cambios que haya realizado el usuario.
- No permite la paginación de forma predeterminada.
- No ofrece ninguna salida HTML predeterminada.
- Al elegir un origen de datos desde su SmartTag no se genera ninguna plantilla predeterminada.
- No incluye ningún enlace en su SmartTag.
- No tiene ninguna plantilla de estilo.
- Las plantillas disponibles son:
- AlternatingItemTemplate
- FooterTemplate
- HeaderTemplate
- ItemTemplate
- SeparatorTemplate
DataList
Un DataList es un control enlazado a datos que permite visualizar todos los registros de una vez.
Permite la edición y selección, pero no la paginación e inserción.
Es un control de tipo Two-day data binding, luego se permite el uso de Bind.
Los eventos CRUD disponibles pueden ser personalizados en los eventos del control.
No permite la paginación de forma predeterminada.
Por defecto genera una salida predeterminada en HTML que se controla a través de la propiedad RepeatLayout:
Table (por defecto), <table>.
Flow, <span>.
Además si RepeatLayout = “Table”, entonces también se puede controla la orientación de la tabla y el número de columnas que se repiten con las propiedades RepeatDirection y RepeatColumns.
Al elegir un origen de datos desde su SmartTag se genera automáticamente la plantilla ItemTemplate con la siguiente estructura:
FieldName:
<asp:Label ID="FieldNameLabel" runat="server" Text='<%# Eval("FieldName") %>' />
<br />
Los enlaces de su SmartTag son los siguientes:
Incluye plantillas de estilo y además en el SmartTag incorpora un generador de propiedades que nos ayuda a configurar la apariencia del control:
Las plantillas disponibles son:
- AlternatingItemStyle
- EditItemStyle
- FooterStyle
- HeaderStyle
- ItemStyle
- SelectedItemStyle
- SeparatorStyle
- AlternatingItemTemplate
- EditItemTemplate
- FooterTemplate
- HeaderTemplate
- ItemTemplate
- SelectedItemTemplate
- SeparatorTemplate
La propiedad DataKeyField indica el valor de que campo (sólo uno) será almacenado en la colección DataKeys, que luego nos permitirá recuperar este valor por un índice de fila, por ejemplo:
' CodigoBanco de la fila 1
Dim codigoBanco As String = DataList1.DataKeys(1)
En este control se permiten 2 acciones principales:
- Edición/Actualización
- Selección
- Los valores válidos para el atributo CommandName son:
- update
- cancel
- edit
- delete
- select
Para entrar un elemento en edición:
<ItemTemplate>
<!--Resto Plantilla-->
<asp:Button ID="btnEditar" runat="server" Text="Editar" CommandName="edit" />
</ItemTemplate>
Protected Sub DataList1_EditCommand( _
ByVal source As Object, _
ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs) _
Handles DataList1.EditCommand
CType(source, DataList).EditItemIndex = e.Item.ItemIndex
CType(source, DataList).DataBind()
End Sub
Para cancelar una edición:
<EditItemTemplate>
<!--Resto plantilla-->
<asp:Button ID="btnCancelar" runat="server" Text="Cancelar" CommandName="cancel" /> </EditItemTemplate>
Protected Sub DataList1_CancelCommand( _
ByVal source As Object, _
ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs) _
Handles DataList1.CancelCommand
DataList1.EditItemIndex = -1
DataList1.DataBind()
End Sub
Para confirmar una edición:
<EditItemTemplate>
<!--Resto plantilla-->
<asp:Button ID="btnActualizar" runat="server" Text="Actualizar" CommandName="update" /> </EditItemTemplate>
Protected Sub DataList1_UpdateCommand( _
ByVal source As Object, _
ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs) _
Handles DataList1.UpdateCommand
Dim codigoBanco As String = DataList1.DataKeys(e.Item.ItemIndex).ToString
Dim banco As String = CType(e.Item.FindControl("txtBanco"), TextBox).Text
' ejecutar sql
DataList1.EditItemIndex = -1
DataList1.DataBind()
End Sub
Para eliminar un elemento:
<asp:Button ID="btnEliminar" runat="server" Text="Eliminar" CommandName="delete" />
Protected Sub DataList1_DeleteCommand( _
ByVal source As Object, _
ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs) _
Handles DataList1.DeleteCommand
Dim codigoBanco As String = DataList1.DataKeys(e.Item.ItemIndex).ToString
' ejecutar sql
DataList1.DataBind()
End Sub
Para seleccionar un elemento:
<asp:Button ID="btnSeleccionar" runat="server" Text="Eliminar" CommandName="select" />
Protected Sub DataList1_SelectedIndexChanged( _
ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles DataList1.SelectedIndexChanged
DataList1.DataBind()
End Sub
Todos estos comandos preestablecidos pasarán antes por el evento ItemCommand y además este evento también nos sirve para simular comandos que no existen y queramos controlar, por ejemplo “unselect”:
Protected Sub DataList1_ItemCommand( _
ByVal source As Object, _
ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs) _
Handles DataList1.ItemCommand
If e.CommandName = "unselect" Then
DataList1.SelectedIndex = -1
End If
DataList1.DataBind()
End Sub
DetailsView
Un control DetailsView muestra un solo registro cada vez. Normalmente se utilizar en escenarios maestro/detalle en conjunción con el control GridView. También se puede utilizar por si sólo como un mantenimiento de datos ya que permite la paginación, inserción, eliminación y actualización.
Aunque DetailsView utiliza el mecanismo de plantillas, sólo lo hace para ciertas secciones del control no relativas a datos del registro activo (Header, Footer, Pager y EmptyData). De este modo, para mostrar información del registro actual funciona a través de campos agregados a su colección Fields. Los tipos de campos admitidos son:
- BoundField
- ButtonField
- CheckBoxField
- CommandField
- HyperLinkField
- ImageField
- TemplateField
- ItemTemplate
- AlternativeItemTemplate
- EditItemTemplate
- InsertItemTemplate
- HeaderTemplate
Es un control de tipo Two-way data binding.
Permite CRUD completo.
Los eventos CRUD disponibles son realizados automáticamente por el control de origen de datos que utiliza DetailsView, no se permite incluir código propio para insertar, actualizar o eliminar un registro.
Permite paginación.
Por defecto genera una salida predeterminada en una tabla.
Al elegir un origen de datos desde su SmartTag no se genera ninguna plantilla predeterminada, aunque en tiempo de ejecución sí genera un fila con todos los datos del registro al que está enlazado.
Los enlaces de su SmartTag son los siguientes:
En el caso de que el control de origen de datos tenga configurado métodos para la inserción, actualización o eliminación, aparecerá este otro SmartTag:
Incluye plantillas de estilo.
Las plantillas disponibles son:
- AlternatingRowStyle
- CommandRowStyle
- EditRowStyle
- EmptyDataRowStyle
- FieldHeaderStyle
- FooterStyle
- HeaderStyle
- InsertRowStyle
- PagerStyle
- RowStyle
- EmptyDataTemplate
- FooterTemplate
- HeaderTemplate
- PagerTemplate
La propiedad DataKeyNames indica los valores de que campos (uno o varios) serán almacenados como campos clave de un registro.
FormView
Un control FormView sirve al mismo propósito y es válido en los mismos escenarios que un control DetailsView. La principal diferencia entre ambos es que FormView no ofrece ninguna salida predeterminada HTML y sólo trabaja con plantillas.
Permite CRUD completo.
Los eventos CRUD disponibles son realizados automáticamente por el control de origen de datos que utiliza FormView.
Permite paginación.
Por defecto genera una salida predeterminada en una tabla.
Al elegir un origen de datos desde su SmartTag se genera automáticamente la siguiente plantilla de código:
<EditItemTemplate>
FieldName:
<asp:Label ID="FieldNameLabel1" runat="server"
Text='<%# Eval("FieldName") %>' />
<br />
<asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True"
CommandName="Update" Text="Actualizar" />
<asp:LinkButton ID="UpdateCancelButton" runat="server"
CausesValidation="False" CommandName="Cancel" Text="Cancelar" />
</EditItemTemplate>
<InsertItemTemplate>
FieldName:
<asp:TextBox ID="FieldNameTextBox" runat="server"
Text='<%# Bind("FieldName") %>' />
<br />
<asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True"
CommandName="Insert" Text="Insertar" />
<asp:LinkButton ID="InsertCancelButton" runat="server"
CausesValidation="False" CommandName="Cancel" Text="Cancelar" />
</InsertItemTemplate>
<ItemTemplate>
FieldName:
<asp:Label ID="FieldNameLabel" runat="server"
Text='<%# Eval("FieldName") %>' />
<asp:LinkButton ID="EditButton" runat="server" CausesValidation="False"
CommandName="Edit" Text="Editar" />
<asp:LinkButton ID="DeleteButton" runat="server" CausesValidation="False"
CommandName="Delete" Text="Eliminar" />
<asp:LinkButton ID="NewButton" runat="server" CausesValidation="False"
CommandName="New" Text="Nuevo" />
</ItemTemplate>
Los enlaces de su SmartTag son los siguientes:
Incluye plantillas de estilo.
Las plantillas disponibles son:
- EditRowStyle
- EmptyDataRowStyle
- FooterStyle
- HeaderStyle
- InsertRowStyle
- PagerStyle
- RowStyle
- EditItemTemplate
- EmptyDataTemplate
- FooterTemplate
- HeaderTemplate
- InsertItemTemplate
- ItemTemplate
- PagerTemplate
La propiedad DataKeyNames indica los valores de que campos (uno o varios) serán almacenados como campos clave de un registro.
Un saludo!
No hay comentarios:
Publicar un comentario