Represents the method that will handle the ItemCreated and ItemDataBound events of the DataList control.
Assembly: System.Web (in System.Web.dll)
Public Delegate Sub DataListItemEventHandler ( _ sender As Object, _ e As DataListItemEventArgs _ )
public delegate void DataListItemEventHandler( Object sender, DataListItemEventArgs e )
public delegate void DataListItemEventHandler( Object^ sender, DataListItemEventArgs^ e )
type DataListItemEventHandler = delegate of sender:Object * e:DataListItemEventArgs -> unit
Parameters
- sender
- Type: System.Object
The source of the event.
- e
- Type: System.Web.UI.WebControls.DataListItemEventArgs
A DataListItemEventArgs that contains the event data.
The ItemCreated event is raised when an item in the DataList control is created.
The ItemDataBound event is raised when an item in the DataList control is data bound to a source.
When you create a DataListItemEventHandler delegate, you identify the method that will handle the event. To associate the event with your event handler, add an instance of the delegate to the event. The event handler is called whenever the event occurs, unless you remove the delegate. For more information about event handler delegates, see Events and Delegates.
The following example demonstrates how to define a handler for the ItemDataBound event to calculate the price of items in a DataList control. This example specifies the event handler declaratively, setting the event handler for the OnItemDataBound attribute on the DataList control.
<%@ Page Language="VB" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <script runat="server"> Function CreateDataSource() As ICollection ' Create sample data for the DataList control. Dim dt As DataTable = New DataTable() Dim dr As DataRow ' Define the columns of the table. dt.Columns.Add(New DataColumn("IntegerValue", GetType(Int32))) dt.Columns.Add(New DataColumn("StringValue", GetType(String))) dt.Columns.Add(New DataColumn("CurrencyValue", GetType(Double))) ' Populate the table with sample values. Dim i As Integer For i = 0 To 8 dr = dt.NewRow() dr(0) = i dr(1) = "Description for item " & i.ToString() dr(2) = 1.23 * (i + 1) dt.Rows.Add(dr) Next i Dim dv As DataView = New DataView(dt) Return dv End Function Sub Page_Load(sender As Object, e As EventArgs) ' Load sample data only once, when the page is first loaded. If Not IsPostBack Then ItemsList.DataSource = CreateDataSource() ItemsList.DataBind() End If End Sub Sub Item_Bound(sender As Object, e As DataListItemEventArgs) If e.Item.ItemType = ListItemType.Item Or _ e.Item.ItemType = ListItemType.AlternatingItem Then ' Retrieve the Label control in the current DataListItem. Dim PriceLabel As Label = _ CType(e.Item.FindControl("PriceLabel"), Label) ' Retrieve the text of the CurrencyColumn from the DataListItem ' and convert the value to a Double. Dim Price As Double = Convert.ToDouble( _ (CType(e.Item.DataItem, DataRowView)).Row.ItemArray(2).ToString()) ' Format the value as currency and redisplay it in the DataList. PriceLabel.Text = Price.ToString("c") End If End Sub </script> <head runat="server"> <title>DataList ItemDataBound Example</title> </head> <body> <form id="form1" runat="server"> <h3>DataList ItemDataBound Example</h3> <asp:DataList id="ItemsList" BorderColor="black" CellPadding="5" CellSpacing="5" RepeatDirection="Vertical" RepeatLayout="Table" RepeatColumns="3" OnItemDataBound="Item_Bound" runat="server"> <HeaderStyle BackColor="#aaaadd"> </HeaderStyle> <AlternatingItemStyle BackColor="Gainsboro"> </AlternatingItemStyle> <HeaderTemplate> List of items </HeaderTemplate> <ItemTemplate> Description: <br /> <%# DataBinder.Eval(Container.DataItem, "StringValue") %> <br /> Price: <asp:Label id="PriceLabel" runat="server"/> </ItemTemplate> </asp:DataList> </form> </body> </html>
<%@ Page Language="C#" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <script runat="server"> ICollection CreateDataSource() { // Create sample data for the DataList control. DataTable dt = new DataTable(); DataRow dr; // Define the columns of the table. dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32))); dt.Columns.Add(new DataColumn("StringValue", typeof(String))); dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double))); // Populate the table with sample values. for (int i = 0; i < 9; i++) { dr = dt.NewRow(); dr[0] = i; dr[1] = "Description for item " + i.ToString(); dr[2] = 1.23 * (i + 1); dt.Rows.Add(dr); } DataView dv = new DataView(dt); return dv; } void Page_Load(Object sender, EventArgs e) { // Load sample data only once, when the page is first loaded. if (!IsPostBack) { ItemsList.DataSource = CreateDataSource(); ItemsList.DataBind(); } } void Item_Bound(Object sender, DataListItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { // Retrieve the Label control in the current DataListItem. Label PriceLabel = (Label)e.Item.FindControl("PriceLabel"); // Retrieve the text of the CurrencyColumn from the DataListItem // and convert the value to a Double. Double Price = Convert.ToDouble( ((DataRowView)e.Item.DataItem).Row.ItemArray[2].ToString()); // Format the value as currency and redisplay it in the DataList. PriceLabel.Text = Price.ToString("c"); } } </script> <head runat="server"> <title>DataList ItemDataBound Example</title> </head> <body> <form id="form1" runat="server"> <h3>DataList ItemDataBound Example</h3> <asp:DataList id="ItemsList" BorderColor="black" CellPadding="5" CellSpacing="5" RepeatDirection="Vertical" RepeatLayout="Table" RepeatColumns="3" OnItemDataBound="Item_Bound" runat="server"> <HeaderStyle BackColor="#aaaadd"> </HeaderStyle> <AlternatingItemStyle BackColor="Gainsboro"> </AlternatingItemStyle> <HeaderTemplate> List of items </HeaderTemplate> <ItemTemplate> Description: <br /> <%# DataBinder.Eval(Container.DataItem, "StringValue") %> <br /> Price: <asp:Label id="PriceLabel" runat="server"/> </ItemTemplate> </asp:DataList> </form> </body> </html>
The following code example demonstrates how to specify the event handler and programmatically add it to the ItemDataBound event in the Page_Load method.
<%@ Page Language="VB" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <script runat="server"> Function CreateDataSource() As ICollection ' Create sample data for the DataList control. Dim dt As DataTable = New DataTable() Dim dr As DataRow ' Define the columns of the table. dt.Columns.Add(New DataColumn("IntegerValue", GetType(Int32))) dt.Columns.Add(New DataColumn("StringValue", GetType(String))) dt.Columns.Add(New DataColumn("CurrencyValue", GetType(Double))) ' Populate the table with sample values. Dim i As Integer For i = 0 To 8 dr = dt.NewRow() dr(0) = i dr(1) = "Description for item " & i.ToString() dr(2) = 1.23 * (i + 1) dt.Rows.Add(dr) Next i Dim dv As DataView = New DataView(dt) Return dv End Function Sub Page_Load(sender As Object, e As EventArgs) ' Manually register the event-handling method for the ' ItemCommand event. AddHandler ItemsList.ItemDataBound, AddressOf Item_Bound ' Load sample data only once, when the page is first loaded. If Not IsPostBack Then ItemsList.DataSource = CreateDataSource() ItemsList.DataBind() End If End Sub Sub Item_Bound(sender As Object, e As DataListItemEventArgs) If e.Item.ItemType = ListItemType.Item Or _ e.Item.ItemType = ListItemType.AlternatingItem Then ' Retrieve the Label control in the current DataListItem. Dim PriceLabel As Label = _ CType(e.Item.FindControl("PriceLabel"), Label) ' Retrieve the text of the CurrencyColumn from the DataListItem ' and convert the value to a Double. Dim Price As Double = Convert.ToDouble( _ (CType(e.Item.DataItem, DataRowView)).Row.ItemArray(2).ToString()) ' Format the value as currency and redisplay it in the DataList. PriceLabel.Text = Price.ToString("c") End If End Sub </script> <head runat="server"> <title>DataList ItemDataBound Example</title> </head> <body> <form id="form1" runat="server"> <h3>DataList ItemDataBound Example</h3> <asp:DataList id="ItemsList" BorderColor="black" CellPadding="5" CellSpacing="5" RepeatDirection="Vertical" RepeatLayout="Table" RepeatColumns="3" OnItemDataBound="Item_Bound" runat="server"> <HeaderStyle BackColor="#aaaadd"> </HeaderStyle> <AlternatingItemStyle BackColor="Gainsboro"> </AlternatingItemStyle> <HeaderTemplate> List of items </HeaderTemplate> <ItemTemplate> Description: <br /> <%# DataBinder.Eval(Container.DataItem, "StringValue") %> <br /> Price: <asp:Label id="PriceLabel" runat="server"/> </ItemTemplate> </asp:DataList> </form> </body> </html>
<%@ Page Language="C#" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <script runat="server"> ICollection CreateDataSource() { // Create sample data for the DataList control. DataTable dt = new DataTable(); DataRow dr; // Define the columns of the table. dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32))); dt.Columns.Add(new DataColumn("StringValue", typeof(String))); dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double))); // Populate the table with sample values. for (int i = 0; i < 9; i++) { dr = dt.NewRow(); dr[0] = i; dr[1] = "Description for item " + i.ToString(); dr[2] = 1.23 * (i + 1); dt.Rows.Add(dr); } DataView dv = new DataView(dt); return dv; } void Page_Load(Object sender, EventArgs e) { // Manually register the event-handling method for the // ItemCommand event. ItemsList.ItemDataBound += new DataListItemEventHandler(this.Item_Bound); // Load sample data only once, when the page is first loaded. if (!IsPostBack) { ItemsList.DataSource = CreateDataSource(); ItemsList.DataBind(); } } void Item_Bound(Object sender, DataListItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { // Retrieve the Label control in the current DataListItem. Label PriceLabel = (Label)e.Item.FindControl("PriceLabel"); // Retrieve the text of the CurrencyColumn from the DataListItem // and convert the value to a Double. Double Price = Convert.ToDouble( ((DataRowView)e.Item.DataItem).Row.ItemArray[2].ToString()); // Format the value as currency and redisplay it in the DataList. PriceLabel.Text = Price.ToString("c"); } } </script> <head runat="server"> <title>DataList ItemDataBound Example</title> </head> <body> <form id="form1" runat="server"> <h3>DataList ItemDataBound Example</h3> <asp:DataList id="ItemsList" BorderColor="black" CellPadding="5" CellSpacing="5" RepeatDirection="Vertical" RepeatLayout="Table" RepeatColumns="3" runat="server"> <HeaderStyle BackColor="#aaaadd"> </HeaderStyle> <AlternatingItemStyle BackColor="Gainsboro"> </AlternatingItemStyle> <HeaderTemplate> List of items </HeaderTemplate> <ItemTemplate> Description: <br /> <%# DataBinder.Eval(Container.DataItem, "StringValue") %> <br /> Price: <asp:Label id="PriceLabel" runat="server"/> </ItemTemplate> </asp:DataList> </form> </body> </html>
.NET Framework
Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.