http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebuiwebcontrolsdatalistclassedititemtemplatetopic.asp
<%@ Page Language="C#" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %>
<html> <head>
<script runat="server">
// The Cart and CartView objects temporarily store the data source // for the DataList control while the page is being processed. DataTable Cart = new DataTable(); DataView CartView; void Page_Load(Object sender, EventArgs e) { // With a database, use an select query to retrieve the data. // Because the data source in this example is an in-memory // DataTable, retrieve the data from session state if it exists; // otherwise, create the data source. GetSource();
// The DataList control maintains state between posts to the server; // it only needs to be bound to a data source the first time the // page is loaded or when the data source is updated. if (!IsPostBack) { string[] slist = new string[]{"a","b","c"}; DataGrid1.DataSource = slist; DataGrid1.DataBind(); } }
void BindList(DataList ItemsList) {
// Set the data source and bind to the DataList control. ItemsList.DataSource = CartView; ItemsList.DataBind();
}
void GetSource() {
// For this example, the data source is a DataTable that // is stored in session state. If the data source does not exist, // create it; otherwise, load the data. if (Session["ShoppingCart"] == null) {
// Create the sample data. DataRow dr; // Define the columns of the table. Cart.Columns.Add(new DataColumn("Qty", typeof(Int32))); Cart.Columns.Add(new DataColumn("Item", typeof(String))); Cart.Columns.Add(new DataColumn("Price", typeof(Double)));
// Store the table in session state to persist its values // between posts to the server. Session["ShoppingCart"] = Cart; // Populate the DataTable with sample data. for (int i = 1; i <= 5; i++) { dr = Cart.NewRow(); if (i % 2 != 0) { dr[0] = 2; } else { dr[0] = 1; } dr[1] = "Item " + i.ToString(); dr[2] = (1.23 * (i + 1)); Cart.Rows.Add(dr); }
}
else {
// Retrieve the sample data from session state. Cart = (DataTable)Session["ShoppingCart"];
} // Create a DataView and specify the field to sort by. CartView = new DataView(Cart); CartView.Sort="Item";
return;
}
void Edit_Command(Object sender, DataListCommandEventArgs e) {
// Set the EditItemIndex property to the index of the item clicked // in the DataList control to enable editing for that item. Be sure // to rebind the DataList to the data source to refresh the control. DataList ItemsList = (DataList)sender; ItemsList.EditItemIndex = e.Item.ItemIndex; BindList(ItemsList);
}
void Cancel_Command(Object sender, DataListCommandEventArgs e) {
// Set the EditItemIndex property to -1 to exit editing mode. Be sure // to rebind the DataList to the data source to refresh the control. DataList ItemsList = (DataList)sender; ItemsList.EditItemIndex = -1; BindList(ItemsList);
}
void Delete_Command(Object sender, DataListCommandEventArgs e) {
// Retrieve the name of the item to remove. String item = ((Label)e.Item.FindControl("ItemLabel")).Text;
// Filter the CartView for the selected item and remove it from // the data source. CartView.RowFilter = "Item='" + item + "'"; if (CartView.Count > 0) { CartView.Delete(0); } CartView.RowFilter = "";
// Set the EditItemIndex property to -1 to exit editing mode. Be sure // to rebind the DataList to the data source to refresh the control.
DataList ItemsList = (DataList)sender; ItemsList.EditItemIndex = -1; BindList(ItemsList);
}
void Update_Command(Object sender, DataListCommandEventArgs e) {
// Retrieve the updated values from the selected item. String item = ((Label)e.Item.FindControl("ItemLabel")).Text; String qty = ((TextBox)e.Item.FindControl("QtyTextBox")).Text; String price = ((TextBox)e.Item.FindControl("PriceTextBox")).Text;
// With a database, use an update command to update the data. // Because the data source in this example is an in-memory // DataTable, delete the old row and replace it with a new one.
// Filter the CartView for the selected item and remove it from // the data source. CartView.RowFilter = "Item='" + item + "'"; if (CartView.Count > 0) { CartView.Delete(0); } CartView.RowFilter = "";
// *************************************************************** // Insert data validation code here. Make sure to validate the // values entered by the user before converting to the appropriate // data types and updating the data source. // ***************************************************************
// Add a new entry to replace the previous item. DataRow dr = Cart.NewRow(); dr[0] = qty; dr[1] = item; // If necessary, remove the '$' character from the price before // converting the price to a Double. if(price[0] == '$') { dr[2] = Convert.ToDouble(price.Substring(1)); } else { dr[2] = Convert.ToDouble(price); } Cart.Rows.Add(dr);
// Set the EditItemIndex property to -1 to exit editing mode. // Be sure to rebind the DataList to the data source to refresh // the control.
DataList ItemsList = (DataList)sender; ItemsList.EditItemIndex = -1; BindList(ItemsList);
}
</script> </head> <body>
<form runat=server ID="Form1">
<h3>DataList Edit Example</h3>
Click <b>Edit</b> to edit the values of the item.
<br><br> <asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="false"> <Columns> <asp:TemplateColumn HeaderText="Count"> <ItemTemplate> <%#Container.ItemIndex+1%> </ItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="Test"> <ItemTemplate> <asp:DataList id="ItemsList01" DataSource='<%#CartView%>' GridLines="Both" RepeatColumns="3" RepeatDirection="Horizontal" CellPadding="3" CellSpacing="0" OnEditCommand="Edit_Command" OnUpdateCommand="Update_Command" OnDeleteCommand="Delete_Command" OnCancelCommand="Cancel_Command" runat="server">
<HeaderStyle BackColor="#aaaadd"> </HeaderStyle>
<AlternatingItemStyle BackColor="Gainsboro"> </AlternatingItemStyle>
<EditItemStyle BackColor="yellow"> </EditItemStyle>
<HeaderTemplate>
Items
</HeaderTemplate> <ItemTemplate>
Item: <%# DataBinder.Eval(Container.DataItem, "Item") %>
<br>
Quantity: <%# DataBinder.Eval(Container.DataItem, "Qty") %>
<br>
Price: <%# DataBinder.Eval(Container.DataItem, "Price", "{0:c}") %>
<br>
<asp:LinkButton id="EditButton" Text="Edit" CommandName="Edit" runat="server"/>
</ItemTemplate> <EditItemTemplate>
Item: <asp:Label id="ItemLabel" Text='<%# DataBinder.Eval(Container.DataItem, "Item") %>' runat="server"/>
<br>
Quantity: <asp:TextBox id="QtyTextBox" Text='<%# DataBinder.Eval(Container.DataItem, "Qty") %>' runat="server"/>
<br>
Price: <asp:TextBox id="PriceTextBox" Text='<%# DataBinder.Eval(Container.DataItem, "Price", "{0:c}") %>' runat="server"/>
<br>
<asp:LinkButton id="UpdateButton" Text="Update" CommandName="Update" runat="server"/>
<asp:LinkButton id="DeleteButton" Text="Delete" CommandName="Delete" runat="server"/>
<asp:LinkButton id="CancelButton" Text="Cancel" CommandName="Cancel" runat="server"/>
</EditItemTemplate>
</asp:DataList> </ItemTemplate> </asp:TemplateColumn> </Columns>
</asp:DataGrid>
<asp:Button runat="server" Text="Refresh" ID="Button1" NAME="Button1"/> </form>
</body> </html>

|