Hola a tod@s,
Hoy os traigo un fragmente de codigo para que empeceis a trastear con el control Repeater, un control que esta disponible en ASP, lo que hace este control es repetir el contenido que tiene dentro de la etiqueta “ItemTemplate” , en funcion de los datos que tenga en su origen de datos. En este ejemplo, pintaremos varios controles en su interior, y os mostrare de una forma sencilla, los pasos que hay que realizar para poder usarlo.
Lo primero de todo, hay que añadir en nuestra pagina .aspx el control, para ello hay que escribir la siguiente linea donde queramos que se muestre:
1 |
<asp:Repeater ID="RepeaterAreas" runat="server"></asp:Repeater> |
El siguiente paso, seria incluir el contenido que queremos que se repita por cada item que va a contener el origen de datos, para ello, tendremos que meterlo dentro de la etiqueta “<ItemTemplate>”, en este caso, vamos a crear dentro una etiqueta label y un desplegable:
1 2 3 4 5 6 |
<asp:Repeater ID="RepeaterAreas" runat="server"> <ItemTemplate> <asp:Label ID="lblAreaCargoId" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "idareacargo") %>'></asp:Label> <asp:ComboBox ID="cmbAreaCargo" runat="server" AutoPostBack="true" OnSelectedIndexChanged="cmbAreaCargo_SelectedIndexChanged"></asp:ComboBox> </ItemTemplate> </asp:Repeater> |
Para informar al control repeater del origen de dato, tenemos que alimentar su propiedad DataSource, para ello en el Load o en el evento que necesitamos, cargaramos en un datatable por ejemplo, los datos y se lo asignamos de esta forma:
1 2 |
Dim dt As Datatable = ORIGEN RepeaterAreas.DataSource = dt |
Si necesitaramos rellenar el desplegable de alguna forma dinamica, podriamos utilizar el siguiente evento para rellenar los valores que correspondan en cada elemento. En este evento se puede manejar el item en cuestion, esto es un ejemplo, pero os invito a trastear con ello.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Private Sub RepeaterAreas_ItemDataBound(sender As Object, e As RepeaterItemEventArgs) Handles RepeaterAreas.ItemDataBound If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then Dim lblArea As Label = TryCast(e.Item.FindControl("lblAreaCargoId"), Label) If Not lblArea Is Nothing Then 'Sacamos el id que tenga por si hiciese falta Dim Id As Integer = Integer.Parse(TryCast(e.Item.FindControl("lblAreaCargoId"), Label).Text) 'Buscamos el control Dim ctrlCombo As ComboBox = TryCast(e.Item.FindControl("cmbAreaCargo"),ComboBox) If Not ctrlCombo Is Nothing Then 'Podemos cargar el origen de datos ctrlCombo.DataSource = dtOrigenDatos ctrlCombo.DataBind() 'Podemos marcarlo por defecto en funcion de un campo del origen de datos del repeater ctrlCombo.Value = e.Item.DataItem("idarea_gobierno").ToString End If End If End If End Sub |
Para recorrernos el control, por ejemplo para guardar, o sacar la informacion que haya introducido el usuario, usariamos el siguiente fragmento de codigo:
1 2 3 |
For Each item As RepeaterItem In RepeaterAreas.Items item.FindControl("lblAreaCargoId") Next |
Bueno espero que te haya servido para tener una idea de lo que permite el control y te ayude en el inicio, intentare realizar algun ejemplo mas proximamente.
Saludos