ListView.SelectedIndexChanging 事件
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
當按一下項目的 [選取] 按鈕時,但是在 ListView 控制項處理選取作業之後發生。
public:
event EventHandler<System::Web::UI::WebControls::ListViewSelectEventArgs ^> ^ SelectedIndexChanging;
public event EventHandler<System.Web.UI.WebControls.ListViewSelectEventArgs> SelectedIndexChanging;
member this.SelectedIndexChanging : EventHandler<System.Web.UI.WebControls.ListViewSelectEventArgs>
Public Custom Event SelectedIndexChanging As EventHandler(Of ListViewSelectEventArgs)
事件類型
範例
下列範例示範如何建立 SelectedIndexChanging 事件的事件處理程式。
<%@ 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>
void ProductsListView_SelectedIndexChanging(Object sender, ListViewSelectEventArgs e)
{
ListViewItem item = (ListViewItem)ProductsListView.Items[e.NewSelectedIndex];
Label l = (Label)item.FindControl("DiscontinuedDateLabel");
if (String.IsNullOrEmpty(l.Text))
{
return;
}
DateTime discontinued = DateTime.Parse(l.Text);
if (discontinued < DateTime.Now)
{
Message.Text = "You cannot select a discontinued item.";
e.Cancel = true;
}
}
//</Snippet2>
protected void ProductsListView_PagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
{
// Clear selection.
ProductsListView.SelectedIndex = -1;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ListView.SelectedIndexChanging Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>ListView.SelectedIndexChanging Example</h3>
<asp:Label ID="Message"
ForeColor="Red"
runat="server"/>
<br/>
<asp:ListView ID="ProductsListView"
DataSourceID="ProductsDataSource"
DataKeyNames="ProductID"
OnSelectedIndexChanging="ProductsListView_SelectedIndexChanging"
OnPagePropertiesChanging="ProductsListView_PagePropertiesChanging"
runat="server" >
<LayoutTemplate>
<table cellpadding="2" runat="server" id="tblProducts" width="640px">
<tr runat="server" id="itemPlaceholder" />
</table>
<asp:DataPager runat="server" ID="ProductsDataPager" 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="SelectButton" runat="server" Text="..." CommandName="Select" />
</td>
<td valign="top">
<asp:Label ID="NameLabel" runat="server" Text='<%#Eval("Name") %>' />
</td>
<td valign="top">
<asp:Label ID="ProductNumberLabel" runat="server" Text='<%#Eval("ProductNumber") %>' />
</td>
<td>
<asp:Label ID="DiscontinuedDateLabel" runat="server" Text='<%#Eval("DiscontinuedDate", "{0:d}") %>' />
</td>
</tr>
</ItemTemplate>
<SelectedItemTemplate>
<tr runat="server" style="background-color:#ADD8E6">
<td> </td>
<td valign="top">
<asp:Label ID="NameLabel" runat="server" Text='<%#Eval("Name") %>' />
</td>
<td valign="top">
<asp:Label ID="ProductNumberLabel" runat="server" Text='<%#Eval("ProductNumber") %>' />
</td>
<td>
<asp:Label ID="DiscontinuedDateLabel" runat="server" Text='<%#Eval("DiscontinuedDate", "{0:d}") %>' />
</td>
</tr>
</SelectedItemTemplate>
</asp:ListView>
<asp:SqlDataSource ID="ProductsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
SelectCommand="SELECT [ProductID], [Name], [ProductNumber], [DiscontinuedDate]
FROM Production.Product"
UpdateCommand="UPDATE Production.Product
SET Name = @Name, ProductNumber = @ProductNumber, DiscontinuedDate = @DiscontinuedDate
WHERE ProductID = @ProductID">
</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>
Sub ProductsListView_SelectedIndexChanging(ByVal sender As Object, ByVal e As ListViewSelectEventArgs)
Dim item As ListViewItem = CType(ProductsListView.Items(e.NewSelectedIndex), ListViewItem)
Dim l As Label = CType(item.FindControl("DiscontinuedDateLabel"), Label)
If String.IsNullOrEmpty(l.Text) Then
Return
End If
Dim discontinued As DateTime = DateTime.Parse(l.Text)
If discontinued < DateTime.Now Then
Message.Text = "You cannot select a discontinued item."
e.Cancel = True
End If
End Sub
'</Snippet2>
Protected Sub ProductsListView_PagePropertiesChanging(ByVal sender As Object, _
ByVal e As PagePropertiesChangingEventArgs)
' Clears the selection.
ProductsListView.SelectedIndex = -1
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ListView.SelectedIndexChanging Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>ListView.SelectedIndexChanging Example</h3>
<asp:Label ID="Message"
ForeColor="Red"
runat="server"/>
<br/>
<asp:ListView ID="ProductsListView"
DataSourceID="ProductsDataSource"
DataKeyNames="ProductID"
OnSelectedIndexChanging="ProductsListView_SelectedIndexChanging"
OnPagePropertiesChanging="ProductsListView_PagePropertiesChanging"
runat="server">
<LayoutTemplate>
<table cellpadding="2" runat="server" id="tblProducts" width="640px">
<tr runat="server" id="itemPlaceholder" />
</table>
<asp:DataPager runat="server" ID="ProductsDataPager" 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="SelectButton" runat="server" Text="..." CommandName="Select" />
</td>
<td valign="top">
<asp:Label ID="NameLabel" runat="server" Text='<%#Eval("Name") %>' />
</td>
<td valign="top">
<asp:Label ID="ProductNumberLabel" runat="server" Text='<%#Eval("ProductNumber") %>' />
</td>
<td>
<asp:Label ID="DiscontinuedDateLabel" runat="server" Text='<%#Eval("DiscontinuedDate", "{0:d}") %>' />
</td>
</tr>
</ItemTemplate>
<SelectedItemTemplate>
<tr runat="server" style="background-color:#ADD8E6">
<td> </td>
<td valign="top">
<asp:Label ID="NameLabel" runat="server" Text='<%#Eval("Name") %>' />
</td>
<td valign="top">
<asp:Label ID="ProductNumberLabel" runat="server" Text='<%#Eval("ProductNumber") %>' />
</td>
<td>
<asp:Label ID="DiscontinuedDateLabel" runat="server" Text='<%#Eval("DiscontinuedDate", "{0:d}") %>' />
</td>
</tr>
</SelectedItemTemplate>
</asp:ListView>
<asp:SqlDataSource ID="ProductsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
SelectCommand="SELECT [ProductID], [Name], [ProductNumber], [DiscontinuedDate]
FROM Production.Product"
UpdateCommand="UPDATE Production.Product
SET Name = @Name, ProductNumber = @ProductNumber, DiscontinuedDate = @DiscontinuedDate
WHERE ProductID = @ProductID">
</asp:SqlDataSource>
</form>
</body>
</html>
備註
SelectedIndexChanging按兩下專案的 [選取] 按鈕,但在控件處理選取作業之前ListView,就會引發事件。 ([選取] 按鈕是屬性設定為 “Select” 的按鈕控件 CommandName 。) 這可讓您在發生此事件時執行自定義例程,例如取消選取作業。
注意
當您以程式設計方式設定 SelectedIndex 屬性時,不會引發此事件。
ListViewSelectEventArgs物件會傳遞至事件處理程式,可讓您判斷使用者所選取專案的索引。 它也可讓您指出應該取消選取作業。 若要取消選取工作,請將 Cancel 物件的 屬性 ListViewSelectEventArgs 設定為 true
。
如需如何處理事件的詳細資訊,請參閱 處理和引發事件。