Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: noviembre 2007
Durante el procesamiento de la página, el control DataList crea elementos individuales que se representan en la página. Para permitir la personalización de los elementos en el momento de su creación, el control DataList desencadena dos eventos:
El evento ItemCreated se desencadena cuando el control DataList crea cada elemento, elemento alterno, encabezado, pie de página, etc.
El evento ItemDataBound se desencadena una vez que los controles de un elemento se han enlazado a datos. Puede utilizar los parámetros de evento para tener acceso a los datos que se utilizan en el enlace de datos. Utilice este evento si la personalización depende de los datos.
Si responde a estos eventos, puede modificar los elementos. Un uso habitual consiste en modificar la apariencia del elemento sobre la base de los datos que se muestran en él. Por ejemplo, si valor numérico leído de una base de datos es negativo, puede establecer el color de fondo del elemento en rojo.
Para personalizar elementos en tiempo de ejecución mediante el evento ItemCreated
Cree un controlador de eventos para el evento ItemCreated del control DataList.
En el controlador de eventos, obtenga el elemento actual utilizando el objeto Item del objeto argumento del evento e. El índice del elemento actual está disponible a través de la propiedad ItemIndex del objeto Item y su tipo está disponible a través de su propiedad ItemType (que se define utilizando la enumeración ListItemType).
Nota:La propiedad ItemIndex devuelve un valor positivo sólo para los objetos Item, AlternatingItem y SelectedItem. El valor de índice para los elementos de encabezado, pie y separador es -1.
El ejemplo siguiente muestra cómo se puede modificar condicionalmente el color de fondo de un elemento. En el ejemplo se utiliza la propiedad ItemType y la enumeración ListItemType para establecer los colores de fondo de los elementos. Los elementos se establecen en LightGoldenrodYellow, los elementos alternos se establecen en DarkGoldenrod y el elemento seleccionado se establece en Yellow.
Protected Sub DataList1_ItemCreated(ByVal sender As Object, _ ByVal e As EventArgs) Select Case e.Item.ItemType Case ListItemType.Item e.Item.BackColor = _ System.Drawing.Color.LightGoldenrodYellow Case ListItemType.AlternatingItem e.Item.BackColor = System.Drawing.Color.DarkGoldenrod Case ListItemType.SelectedItem e.Item.BackColor = System.Drawing.Color.Yellow Case Else ' Add code here to hand the header, footer, and ' separator templates. End Select End Subprotected void DataList1_ItemCreated(object sender, EventArgs e) { switch (e.Item.ItemType) { case ListItemType.Item : e.Item.BackColor = System.Drawing.Color.LightGoldenrodYellow; break; case ListItemType.AlternatingItem : e.Item.BackColor = System.Drawing.Color.DarkGoldenrod; break; case ListItemType.SelectedItem : e.Item.BackColor = System.Drawing.Color.Yellow; break; default : // Add code here to handle the header, footer, and // separator templates. break; } }
En el momento en que se produce el evento ItemCreated, los controles individuales de las plantillas no están aún enlazados a datos. Sin embargo, los datos están disponibles en el evento ItemDataBound.
Para personalizar elementos en tiempo de ejecución mediante el evento ItemDataBound
Cree un controlador de eventos para el evento ItemDataBound del control DataList.
En el controlador de eventos, compruebe que está trabajando con un objeto Item,AlternatingItem o EditItem y no con un encabezado o pie de página.
Utilice la propiedad DataItem para comprobar los datos que se enlazarán al control y establecer una comparación de dichos datos.
El ejemplo siguiente muestra cómo hacer una prueba condicional basada en datos. El ejemplo convierte la propiedad DataItem del argumento de evento en un objeto DataRowView. A continuación, extrae el campo denominado Quantity del objeto DataItem actual. Si la cantidad es menor de 10, el elemento del control DataList aparece en rojo.
Protected Sub DataList1_ItemDataBound(ByVal sender As Object, _ ByVal e As DataListItemEventArgs) If e.Item.ItemType = ListItemType.Item Or _ e.Item.ItemType = ListItemType.AlternatingItem Then Dim drv As System.Data.DataRowView = _ CType(e.Item.DataItem, System.Data.DataRowView) Dim quantity As Integer = _ Integer.Parse(drv.Row("Quantity").ToString()) If (quantity < 10) Then e.Item.BackColor = System.Drawing.Color.Red End If End If End Subprotected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e) { if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { System.Data.DataRowView drv = (System.Data.DataRowView)(e.Item.DataItem); int quantity = int.Parse(drv.Row["Quantity"].ToString()); if (quantity < 10) { e.Item.BackColor = Color.Red; } } }
Vea también
Referencia
Información general sobre DataList (Control de servidor Web)