ListView.ItemCanceling ListView.ItemCanceling ListView.ItemCanceling ListView.ItemCanceling Event

Определение

Происходит при запросе операции отмены, прежде чем элемент управления ListView отменяет операцию вставки или редактирования.Occurs when a cancel operation is requested, but before the ListView control cancels the insert or edit operation.

public:
 event EventHandler<System::Web::UI::WebControls::ListViewCancelEventArgs ^> ^ ItemCanceling;
public event EventHandler<System.Web.UI.WebControls.ListViewCancelEventArgs> ItemCanceling;
member this.ItemCanceling : EventHandler<System.Web.UI.WebControls.ListViewCancelEventArgs> 
Public Custom Event ItemCanceling As EventHandler(Of ListViewCancelEventArgs) 

Примеры

В следующем примере показано, как создать ItemCanceling обработчик событий.The following example shows how to create an ItemCanceling event handler.

Важно!

Этот пример содержит текстовые поля, которые принимают пользовательский ввод, что является потенциальной угрозой безопасности.This example contains text boxes that accept user input, which is a potential security threat. По умолчанию данные, вводимые пользователем на веб-страницах ASP.NET, проверяются на наличие скриптов и HTML-элементов.By default, ASP.NET Web pages validate that user input does not include script or HTML elements. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.For more information, see Script Exploits Overview.

<%@ Page language="C#" %>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

  void Page_Load()
  {
    Message.Text = String.Empty;
  }

  // <Snippet2>
  protected void ContactsListView_ItemCanceling(object sender, ListViewCancelEventArgs e)
  {
    //Check the operation that raised the event
    if (e.CancelMode == ListViewCancelMode.CancelingEdit)
    {
      // The update operation was canceled. Display the 
      // primary key of the item.
      Message.Text = "Update for the ContactID " + 
        ContactsListView.DataKeys[e.ItemIndex].Value.ToString()  + " canceled.";
    }
    else
    {
      Message.Text = "Insert operation canceled."; 
    }
  }
  // </Snippet2>

  protected void ContactsListView_PagePropertiesChanging(object sender, 
    PagePropertiesChangingEventArgs e)
  {
    // Clears the edit index selection when paging.
    ContactsListView.EditIndex = -1;
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head id="Head1" runat="server">
    <title>ListView ItemCanceling Example</title>
  </head>
  <body>
    <form id="form1" runat="server">
        
      <h3>ListView ItemCanceling Example</h3>
      
      <asp:Label ID="Message"
        ForeColor="Red"          
        runat="server"/>
      <br/>
                 
      <asp:ListView ID="ContactsListView" 
        DataSourceID="ContactsDataSource" 
        DataKeyNames="ContactID"
        ConvertEmptyStringToNull="true"
        InsertItemPosition="LastItem"
        runat="server" 
        OnItemCanceling="ContactsListView_ItemCanceling" 
        OnPagePropertiesChanging="ContactsListView_PagePropertiesChanging" >
        <LayoutTemplate>
          <table cellpadding="2" width="680px" border="1" runat="server" id="tblContacts">
            <tr runat="server">
              <th runat="server">&nbsp;</th>
              <th runat="server">ID</th>
              <th runat="server">First Name</th>
              <th runat="server">Last Name</th>
              <th runat="server">Email Address</th>
            </tr>
            <tr runat="server" id="itemPlaceholder" />
          </table>
          <asp:DataPager runat="server" ID="ContactsDataPager" PageSize="12">
            <Fields>
              <asp:NextPreviousPagerField 
                ShowFirstPageButton="true" ShowLastPageButton="true"
                FirstPageText="|&lt;&lt; " LastPageText=" &gt;&gt;|"
                NextPageText=" &gt; " PreviousPageText=" &lt; " />
            </Fields>
          </asp:DataPager>
        </LayoutTemplate>
        <ItemTemplate>
          <tr runat="server">
            <td valign="top">
              <asp:LinkButton ID="EditButton" runat="server" Text="Edit" CommandName="Edit" /><br />
            </td>
            <td valign="top">
              <asp:Label ID="Label1" runat="server" Text='<%#Eval("ContactID") %>' />
            </td>
            <td valign="top">
              <asp:Label ID="FirstNameLabel" runat="server" Text='<%#Eval("FirstName") %>' />
            </td>
            <td valign="top">
              <asp:Label ID="LastNameLabel" runat="server" Text='<%#Eval("LastName") %>' />
            </td>
            <td valign="top">
              <asp:Label ID="EmailAddressLabel" runat="server" Text='<%#Eval("EmailAddress") %>' />
              &nbsp;
            </td>
          </tr>
        </ItemTemplate>
        <EditItemTemplate>
          <tr style="background-color: #ADD8E6">
            <td valign="top">
              <asp:LinkButton ID="UpdateButton" runat="server" CommandName="Update" Text="Update" /><br />
              <asp:LinkButton ID="CancelEditButton" runat="server" CommandName="Cancel" Text="Cancel" />
            </td>
            <td>
              <asp:Label ID="Label1" runat="server" Text='<%#Eval("ContactID") %>' />
            </td>
            <td>
              <asp:TextBox ID="FirstNameTextBox" runat="server" 
                Text='<%#Bind("FirstName") %>' MaxLength="50" /><br />
            </td>
            <td>
              <asp:TextBox ID="LastNameTextBox" runat="server" 
                Text='<%#Bind("LastName") %>' MaxLength="50" /><br />
            </td>
            <td>
              <asp:TextBox ID="EmailAddressTextBox" runat="server" 
                Text='<%#Bind("EmailAddress") %>' MaxLength="50" /><br />
            </td>
          </tr>
        </EditItemTemplate>
        <InsertItemTemplate>
          <tr style="background-color:#90EE90">
            <td colspan="2">
              <asp:LinkButton ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" /><br />
              <asp:LinkButton ID="CancelInsertButton" runat="server" CommandName="Cancel" Text="Cancel" />
            </td>              
            <td>
              <asp:TextBox ID="FirstNameITextBox" runat="server" 
                Text='<%#Bind("FirstName") %>' MaxLength="50" />
            </td>
            <td>
              <asp:TextBox ID="LastNameITextBox" runat="server" 
                Text='<%#Bind("LastName") %>' MaxLength="50" />
            </td>
            <td>
              <asp:TextBox ID="EmailAddressITextBox" runat="server" 
                Text='<%#Bind("EmailAddress") %>' MaxLength="50" />
           </td>
          </tr>
        </InsertItemTemplate>
      </asp:ListView>

      <!-- This example uses Microsoft SQL Server and connects      -->
      <!-- to the AdventureWorks sample database. Use an ASP.NET    -->
      <!-- expression to retrieve the connection string value       -->
      <!-- from the Web.config file.                                -->
      <asp:SqlDataSource ID="ContactsDataSource" runat="server" 
        ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
        SelectCommand="SELECT [ContactID], [FirstName], [LastName], [EmailAddress] FROM Person.Contact"
        InsertCommand="INSERT INTO Person.Contact
                         ([FirstName], [LastName], [EmailAddress], [PasswordHash], [PasswordSalt]) 
                         Values(@FirstName, @LastName, @EmailAddress, '', '')"
        UpdateCommand="UPDATE Person.Contact
                         SET FirstName = @FirstName, LastName = @LastName,
                         EmailAddress = @EmailAddress
                         WHERE ContactID = @ContactID">
      </asp:SqlDataSource>
      
    </form>
  </body>
</html>
<%@ Page language="VB" %>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

  Sub Page_Load()
    Message.Text = String.Empty
  End Sub

  ' <Snippet2>
  Protected Sub ContactsListView_ItemCanceling(ByVal sender As Object, _
                                               ByVal e As ListViewCancelEventArgs)
    'Check the operation that raised the event
    If (e.CancelMode = ListViewCancelMode.CancelingEdit) Then
      ' The update operation was canceled. Display the 
      ' primary key of the item.
      Message.Text = "Update for the ContactID " & _
        ContactsListView.DataKeys(e.ItemIndex).Value.ToString() & " canceled."
    Else
      Message.Text = "Insert operation canceled."
    End If

  End Sub
  ' </Snippet2>
  
  Protected Sub ContactsListView_PagePropertiesChanging(ByVal sender As Object, _
                                               ByVal e As PagePropertiesChangingEventArgs)
    ' Clears the edit index selection when paging.
    ContactsListView.EditIndex = -1
  End Sub
    
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head id="Head1" runat="server">
    <title>ListView ItemCanceling Example</title>
  </head>
  <body>
    <form id="form1" runat="server">
        
      <h3>ListView ItemCanceling Example</h3>
      
      <asp:Label ID="Message"
        ForeColor="Red"          
        runat="server"/>
      <br/>
                 
      <asp:ListView ID="ContactsListView" 
        DataSourceID="ContactsDataSource" 
        DataKeyNames="ContactID"
        ConvertEmptyStringToNull="true"
        InsertItemPosition="LastItem"
        runat="server" 
        OnItemCanceling="ContactsListView_ItemCanceling" 
        OnPagePropertiesChanging="ContactsListView_PagePropertiesChanging" >
        <LayoutTemplate>
          <table cellpadding="2" width="680px" border="1" runat="server" id="tblContacts">
            <tr runat="server">
              <th runat="server">&nbsp;</th>
              <th runat="server">ID</th>
              <th runat="server">First Name</th>
              <th runat="server">Last Name</th>
              <th runat="server">Email Address</th>
            </tr>
            <tr runat="server" id="itemPlaceholder" />
          </table>
          <asp:DataPager runat="server" ID="ContactsDataPager" PageSize="12">
            <Fields>
              <asp:NextPreviousPagerField 
                ShowFirstPageButton="true" ShowLastPageButton="true"
                FirstPageText="|&lt;&lt; " LastPageText=" &gt;&gt;|"
                NextPageText=" &gt; " PreviousPageText=" &lt; " />
            </Fields>
          </asp:DataPager>
        </LayoutTemplate>
        <ItemTemplate>
          <tr runat="server">
            <td valign="top">
              <asp:LinkButton ID="EditButton" runat="server" Text="Edit" CommandName="Edit" /><br />
            </td>
            <td valign="top">
              <asp:Label ID="Label1" runat="server" Text='<%#Eval("ContactID") %>' />
            </td>
            <td valign="top">
              <asp:Label ID="FirstNameLabel" runat="server" Text='<%#Eval("FirstName") %>' />
            </td>
            <td valign="top">
              <asp:Label ID="LastNameLabel" runat="server" Text='<%#Eval("LastName") %>' />
            </td>
            <td valign="top">
              <asp:Label ID="EmailAddressLabel" runat="server" Text='<%#Eval("EmailAddress") %>' />
              &nbsp;
            </td>
          </tr>
        </ItemTemplate>
        <EditItemTemplate>
          <tr style="background-color: #ADD8E6">
            <td valign="top">
              <asp:LinkButton ID="UpdateButton" runat="server" CommandName="Update" Text="Update" /><br />
              <asp:LinkButton ID="CancelEditButton" runat="server" CommandName="Cancel" Text="Cancel" />
            </td>
            <td>
              <asp:Label ID="Label1" runat="server" Text='<%#Eval("ContactID") %>' />
            </td>
            <td>
              <asp:TextBox ID="FirstNameTextBox" runat="server" 
                Text='<%#Bind("FirstName") %>' MaxLength="50" /><br />
            </td>
            <td>
              <asp:TextBox ID="LastNameTextBox" runat="server" 
                Text='<%#Bind("LastName") %>' MaxLength="50" /><br />
            </td>
            <td>
              <asp:TextBox ID="EmailAddressTextBox" runat="server" 
                Text='<%#Bind("EmailAddress") %>' MaxLength="50" /><br />
            </td>
          </tr>
        </EditItemTemplate>
        <InsertItemTemplate>
          <tr style="background-color:#90EE90">
            <td colspan="2">
              <asp:LinkButton ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" /><br />
              <asp:LinkButton ID="CancelInsertButton" runat="server" CommandName="Cancel" Text="Cancel" />
            </td>              
            <td>
              <asp:TextBox ID="FirstNameITextBox" runat="server" 
                Text='<%#Bind("FirstName") %>' MaxLength="50" />
            </td>
            <td>
              <asp:TextBox ID="LastNameITextBox" runat="server" 
                Text='<%#Bind("LastName") %>' MaxLength="50" />
            </td>
            <td>
              <asp:TextBox ID="EmailAddressITextBox" runat="server" 
                Text='<%#Bind("EmailAddress") %>' MaxLength="50" />
           </td>
          </tr>
        </InsertItemTemplate>
      </asp:ListView>

      <!-- This example uses Microsoft SQL Server and connects      -->
      <!-- to the AdventureWorks sample database. Use an ASP.NET    -->
      <!-- expression to retrieve the connection string value       -->
      <!-- from the Web.config file.                                -->
      <asp:SqlDataSource ID="ContactsDataSource" runat="server" 
        ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
        SelectCommand="SELECT [ContactID], [FirstName], [LastName], [EmailAddress] FROM Person.Contact"
        InsertCommand="INSERT INTO Person.Contact
                         ([FirstName], [LastName], [EmailAddress], [PasswordHash], [PasswordSalt]) 
                         Values(@FirstName, @LastName, @EmailAddress, '', '')"
        UpdateCommand="UPDATE Person.Contact
                         SET FirstName = @FirstName, LastName = @LastName,
                         EmailAddress = @EmailAddress
                         WHERE ContactID = @ContactID">
      </asp:SqlDataSource>
      
    </form>
  </body>
</html>

Комментарии

ListView Управления вызывает ItemCanceling событие, когда кнопки "Отмена" в InsertItemTemplate или EditItemTemplate выбран шаблон, но перед ListView управления отменяет операцию вставки или редактирования.The ListView control raises the ItemCanceling event when a Cancel button in the InsertItemTemplate or EditItemTemplate template is clicked, but before the ListView control cancels the insert or edit operation. (Кнопка отмены — элемент управления кнопки CommandName свойство имеет значение «Cancel».) Это позволяет выполнять пользовательские действия при каждом возникновении этого события, такие как остановка операции отмены, если его поместить элемент в нежелательное состояние.(A Cancel button is a button control whose CommandName property is set to "Cancel".) This enables you to perform a custom routine whenever this event occurs, such as stopping the cancel operation if it would put the item in an unwanted state.

Объект ListViewCancelEventArgs объект передается в обработчик событий, который позволяет определить индекс элемента.A ListViewCancelEventArgs object is passed to the event handler, which enables you to determine the index of the item. Это также позволяет указать, что операция отмены должна быть остановлена.It also lets you indicate that the cancel operation should be stopped. Чтобы остановить операцию, задайте Cancel свойство ListViewCancelEventArgs объект true.To stop the operation, set the Cancel property of the ListViewCancelEventArgs object to true.

Дополнительные сведения об обработке событий см. в разделе обработка и вызов событий.For more information about how to handle events, see Handling and Raising Events.

Применяется к

Дополнительно