DataListCommandEventArgs 클래스

정의

컨트롤의 CancelCommand, DeleteCommand, EditCommandItemCommandUpdateCommand 이벤트에 DataList 대한 데이터를 제공합니다. 이 클래스는 상속할 수 없습니다.

public ref class DataListCommandEventArgs sealed : System::Web::UI::WebControls::CommandEventArgs
public ref class DataListCommandEventArgs : System::Web::UI::WebControls::CommandEventArgs
public sealed class DataListCommandEventArgs : System.Web.UI.WebControls.CommandEventArgs
public class DataListCommandEventArgs : System.Web.UI.WebControls.CommandEventArgs
type DataListCommandEventArgs = class
    inherit CommandEventArgs
Public NotInheritable Class DataListCommandEventArgs
Inherits CommandEventArgs
Public Class DataListCommandEventArgs
Inherits CommandEventArgs
상속
DataListCommandEventArgs

예제

다음 예제에서는 컨트롤의 이벤트 및 이벤트에 대한 EditCommandUpdateCommandCancelCommandDeleteCommand 이벤트 처리기를 정의하는 방법을 보여 줍니다.DataList 다음은 이벤트 처리기를 선언적으로 지정하고 컨트롤의 DataList 각 명령 속성에 대한 이벤트 처리기를 설정하는 예제입니다.


<%@ 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" >
<head>
    <title>DataList Edit Example</title>
<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)
         {

            BindList();

         }
                   
      }

      void BindList() 
      {

         // 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 <= 9; 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.
         ItemsList.EditItemIndex = e.Item.ItemIndex;
         BindList();

      }

      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.
         ItemsList.EditItemIndex = -1;
         BindList();

      }

      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.
         ItemsList.EditItemIndex = -1;
         BindList();

      }

      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.
         ItemsList.EditItemIndex = -1;
         BindList();

      }

   </script>

</head>
<body>

   <form id="form1" runat="server">

      <h3>DataList Edit Example</h3>

      Click <b>Edit</b> to edit the values of the item.

      <br /><br />
       
      <asp:DataList id="ItemsList"
           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>

   </form>

</body>
</html>

<%@ 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" >
<head>
    <title>DataList Edit Example</title>
<script runat="server">

      ' The Cart and CartView objects temporarily store the data source
      ' for the DataList control while the page is being processed.
      Dim Cart As DataTable = New DataTable()
      Dim CartView As DataView
 
      Sub Page_Load(sende As Object, e As EventArgs) 
 
         ' 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 DataGrid 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 Not IsPostBack Then

            BindList()

         End If
                   
      End Sub

      Sub BindList() 

         ' Set the data source and bind to the DataList control.
         ItemsList.DataSource = CartView
         ItemsList.DataBind()

      End Sub

      Sub 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") Is Nothing Then 

            ' Create the sample data.
            Dim dr As DataRow  
 
            ' Define the columns of the table.
            Cart.Columns.Add(new DataColumn("Qty", GetType(Int32)))
            Cart.Columns.Add(new DataColumn("Item", GetType(String)))
            Cart.Columns.Add(new DataColumn("Price", GetType(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.
            Dim i As Integer

            For i = 1 To 9 
            
               dr = Cart.NewRow()
               If (i Mod 2) <> 0 Then

                  dr(0) = 2
               
               Else
               
                  dr(0) = 1
               
               End If

               dr(1) = "Item " & i.ToString()
               dr(2) = (1.23 * (i + 1))
               Cart.Rows.Add(dr)
            
            Next i

         Else

            ' Retrieve the sample data from session state.
            Cart = CType(Session("ShoppingCart"), DataTable)

         End If         
 
         ' Create a DataView and specify the field to sort by.
         CartView = New DataView(Cart)
         CartView.Sort="Item"

         Return

      End Sub

      Sub Edit_Command(sender As Object, e As DataListCommandEventArgs) 

         ' 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.
         ItemsList.EditItemIndex = e.Item.ItemIndex
         BindList()

      End Sub

      Sub Cancel_Command(sender As Object, e As DataListCommandEventArgs) 

         ' Set the EditItemIndex property to -1 to exit editing mode. Be sure
         ' to rebind the DataList to the data source to refresh the control.
         ItemsList.EditItemIndex = -1
         BindList()

      End Sub

      Sub Delete_Command(sender As Object, e As DataListCommandEventArgs) 

         ' Retrieve the name of the item to remove.
         Dim item As String = (CType(e.Item.FindControl("ItemLabel"), Label)).Text

         ' Filter the CartView for the selected item and remove it from
         ' the data source.
         CartView.RowFilter = "Item='" & item & "'"
         If CartView.Count > 0 Then 
       
            CartView.Delete(0)
         
         End If
         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.
         ItemsList.EditItemIndex = -1
         BindList()

      End Sub

      Sub Update_Command(sender As Object, e As DataListCommandEventArgs) 

         ' Retrieve the updated values from the selected item.
         Dim item As String = _
             (CType(e.Item.FindControl("ItemLabel"), Label)).Text
         Dim qty As String = _
             (CType(e.Item.FindControl("QtyTextBox"), TextBox)).Text
         Dim price As String = _
             (CType(e.Item.FindControl("PriceTextBox"), TextBox)).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 Then 
       
            CartView.Delete(0)
         
         End If
         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.
         Dim dr As DataRow = 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.Chars(0) = "$" Then

            dr(2) = Convert.ToDouble(price.Substring(1))

         Else

            dr(2) = Convert.ToDouble(price)
         
         End If

         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.
         ItemsList.EditItemIndex = -1
         BindList()

      End Sub

   </script>

</head>
<body>

   <form id="form1" runat="server">

      <h3>DataList Edit Example</h3>

      Click <b>Edit</b> to edit the values of the item.

      <br /><br />
       
      <asp:DataList id="ItemsList"
           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>

   </form>

</body>
</html>

다음 예제에서는 이벤트 처리기를 지정 하 고 프로그래밍 방식으로 메서드의 이벤트에 Page_Load 추가 하는 방법을 보여 줍니다.


<%@ 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" >
<head>
    <title>DataList Edit Example</title>
<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)
         {

            BindList();

         }

         // Manually register the event-handling methods.
         ItemsList.EditCommand += 
             new DataListCommandEventHandler(this.Edit_Command);
         ItemsList.UpdateCommand += 
             new DataListCommandEventHandler(this.Update_Command);
         ItemsList.DeleteCommand += 
             new DataListCommandEventHandler(this.Delete_Command);
         ItemsList.CancelCommand += 
             new DataListCommandEventHandler(this.Cancel_Command);
                   
      }

      void BindList() 
      {

         // 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 <= 9; 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.
         ItemsList.EditItemIndex = e.Item.ItemIndex;
         BindList();

      }

      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.
         ItemsList.EditItemIndex = -1;
         BindList();

      }

      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.
         ItemsList.EditItemIndex = -1;
         BindList();

      }

      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.
         ItemsList.EditItemIndex = -1;
         BindList();

      }

   </script>

</head>
<body>

   <form id="form1" runat="server">

      <h3>DataList Edit Example</h3>

      Click <b>Edit</b> to edit the values of the item.

      <br /><br />
       
      <asp:DataList id="ItemsList"
           GridLines="Both"
           RepeatColumns="3"
           RepeatDirection="Horizontal"
           CellPadding="3"
           CellSpacing="0"
           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>

   </form>

</body>
</html>

<%@ 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" >
<head>
    <title>DataList Edit Example</title>
<script runat="server">

      ' The Cart and CartView objects temporarily store the data source
      ' for the DataList control while the page is being processed.
      Dim Cart As DataTable = New DataTable()
      Dim CartView As DataView
 
      Sub Page_Load(sende As Object, e As EventArgs) 
 
         ' 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 DataGrid 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 Not IsPostBack Then

            BindList()

         End If

         ' Manually register the event-handling methods.
         AddHandler ItemsList.EditCommand, AddressOf Edit_Command
         AddHandler ItemsList.UpdateCommand, AddressOf Update_Command
         AddHandler ItemsList.DeleteCommand, AddressOf Delete_Command
         AddHandler ItemsList.CancelCommand, AddressOf Cancel_Command
                   
      End Sub

      Sub BindList() 

         ' Set the data source and bind to the DataList control.
         ItemsList.DataSource = CartView
         ItemsList.DataBind()

      End Sub

      Sub 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") Is Nothing Then 

            ' Create the sample data.
            Dim dr As DataRow  
 
            ' Define the columns of the table.
            Cart.Columns.Add(new DataColumn("Qty", GetType(Int32)))
            Cart.Columns.Add(new DataColumn("Item", GetType(String)))
            Cart.Columns.Add(new DataColumn("Price", GetType(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.
            Dim i As Integer

            For i = 1 To 9 
            
               dr = Cart.NewRow()
               If (i Mod 2) <> 0 Then

                  dr(0) = 2
               
               Else
               
                  dr(0) = 1
               
               End If

               dr(1) = "Item " & i.ToString()
               dr(2) = (1.23 * (i + 1))
               Cart.Rows.Add(dr)
            
            Next i

         Else

            ' Retrieve the sample data from session state.
            Cart = CType(Session("ShoppingCart"), DataTable)

         End If         
 
         ' Create a DataView and specify the field to sort by.
         CartView = New DataView(Cart)
         CartView.Sort="Item"

         Return

      End Sub

      Sub Edit_Command(sender As Object, e As DataListCommandEventArgs) 

         ' 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.
         ItemsList.EditItemIndex = e.Item.ItemIndex
         BindList()

      End Sub

      Sub Cancel_Command(sender As Object, e As DataListCommandEventArgs) 

         ' Set the EditItemIndex property to -1 to exit editing mode. Be sure
         ' to rebind the DataList to the data source to refresh the control.
         ItemsList.EditItemIndex = -1
         BindList()

      End Sub

      Sub Delete_Command(sender As Object, e As DataListCommandEventArgs) 

         ' Retrieve the name of the item to remove.
         Dim item As String = (CType(e.Item.FindControl("ItemLabel"), Label)).Text

         ' Filter the CartView for the selected item and remove it from 
         ' the data source.
         CartView.RowFilter = "Item='" & item & "'"
         If CartView.Count > 0 Then 
       
            CartView.Delete(0)
         
         End If
         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.
         ItemsList.EditItemIndex = -1
         BindList()

      End Sub

      Sub Update_Command(sender As Object, e As DataListCommandEventArgs) 

         ' Retrieve the updated values from the selected item.
         Dim item As String = _
             (CType(e.Item.FindControl("ItemLabel"), Label)).Text
         Dim qty As String = _
             (CType(e.Item.FindControl("QtyTextBox"), TextBox)).Text
         Dim price As String = _
             (CType(e.Item.FindControl("PriceTextBox"), TextBox)).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 Then 
       
            CartView.Delete(0)
         
         End If
         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.
         Dim dr As DataRow = 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.Chars(0) = "$" Then

            dr(2) = Convert.ToDouble(price.Substring(1))

         Else

            dr(2) = Convert.ToDouble(price)
         
         End If

         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.
         ItemsList.EditItemIndex = -1
         BindList()

      End Sub

   </script>

</head>
<body>

   <form id="form1" runat="server">

      <h3>DataList Edit Example</h3>

      Click <b>Edit</b> to edit the values of the item.

      <br /><br />
       
      <asp:DataList id="ItemsList"
           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>

   </form>

</body>
</html>

설명

컨트롤 CancelCommandCancel 항목 DataList 에 대한 단추를 클릭하면 이벤트가 발생합니다.

컨트롤 DeleteCommandDelete 항목 DataList 에 대한 단추를 클릭하면 이벤트가 발생합니다.

컨트롤 EditCommandEdit 항목 DataList 에 대한 단추를 클릭하면 이벤트가 발생합니다.

컨트롤 ItemCommand 의 항목 DataList 에 대한 단추를 클릭할 때 이벤트가 발생합니다. 이렇게 하면 특정 명령 단추를 클릭한 시기를 프로그래밍 방식으로 테스트하고 적절한 작업을 수행할 수 있습니다. 이 이벤트는 일반적으로 컨트롤에 대 한 사용자 지정 명령 단추를 처리 하는 DataList 데 사용 됩니다.

컨트롤 UpdateCommandUpdate 항목 DataList 에 대한 단추를 클릭하면 이벤트가 발생합니다.

인스턴스 DataListCommandEventArgs의 초기 속성 값 목록은 생성자를 참조 DataListCommandEventArgs 하세요.

이벤트를 처리하는 방법에 대한 자세한 내용은 이벤트 처리 및 발생을 참조하세요.

생성자

Name Description
DataListCommandEventArgs(DataListItem, Object, CommandEventArgs)

DataListCommandEventArgs 클래스의 새 인스턴스를 초기화합니다.

속성

Name Description
CommandArgument

명령에 대한 인수를 가져옵니다.

(다음에서 상속됨 CommandEventArgs)
CommandName

명령의 이름을 가져옵니다.

(다음에서 상속됨 CommandEventArgs)
CommandSource

명령의 원본을 가져옵니다.

Item

컨트롤의 명령 소스 DataList 가 포함된 항목을 가져옵니다.

메서드

Name Description
Equals(Object)

지정된 개체가 현재 개체와 같은지 여부를 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 사용됩니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

적용 대상

추가 정보