ListView.ItemCanceling 事件
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
當要求取消作業時,但是在 ListView 控制項取消插入或編輯作業之前發生。
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 事件處理程式。
重要
此範例包含接受使用者輸入的文本框,這是潛在的安全性威脅。 根據預設,ASP.NET Web 網頁會驗證使用者輸入未包含指令碼或 HTML 項目。 如需詳細資訊,請參閱 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"> </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="|<< " LastPageText=" >>|"
NextPageText=" > " PreviousPageText=" < " />
</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") %>' />
</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"> </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="|<< " LastPageText=" >>|"
NextPageText=" > " PreviousPageText=" < " />
</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") %>' />
</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>
備註
當單擊 或 EditItemTemplate 範本中的 InsertItemTemplate [取消] 按鈕,但在控件取消插入或編輯作業之前ListView,控件ListView就會引發 ItemCanceling 事件。 ([取消] 按鈕是一個按鈕控件,其 CommandName 屬性設定為 “Cancel”。) 這可讓您在發生此事件時執行自定義例程,例如,如果取消作業將專案置於不想要的狀態,則會停止取消作業。
ListViewCancelEventArgs物件會傳遞至事件處理程式,可讓您判斷專案的索引。 它也可讓您指出應該停止取消作業。 若要停止作業,請將 Cancel 物件的屬性 ListViewCancelEventArgs 設定為 true
。
如需如何處理事件的詳細資訊,請參閱 處理和引發事件。