次の方法で共有


ListView.SelectedIndexChanged イベント

定義

項目の Select ボタンがクリックされたときに、ListView コントロールが選択操作を処理した後で発生します。

public:
 event EventHandler ^ SelectedIndexChanged;
public event EventHandler SelectedIndexChanged;
member this.SelectedIndexChanged : EventHandler 
Public Custom Event SelectedIndexChanged As EventHandler 

イベントの種類

次の例は、イベントのイベント ハンドラーを作成する方法を SelectedIndexChanged 示しています。

<%@ 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">
    
  //<Snippet3>
  void ContactsListView_SelectedIndexChanged(Object sender, EventArgs e)
  {
    if (ContactsListView.SelectedIndex >= 0)
      ViewState["SelectedKey"] = ContactsListView.SelectedValue;
    else
      ViewState["SelectedKey"] = null;
  }
  
  void ContactsListView_DataBound(Object sender, EventArgs e)
  {
    for (int i = 0; i < ContactsListView.Items.Count; i++)
    {
      // Ignore values that cannot be cast as integer.
      try
      {
          if ((int)ContactsListView.DataKeys[i].Value == (int)ViewState["SelectedKey"])
              ContactsListView.SelectedIndex = i;
      }
      catch { }
    }
  }
  //</Snippet3>

  void ContactsListView_PagePropertiesChanged(Object sender, EventArgs e)
  {
    ContactsListView.SelectedIndex = -1;
  }

  void ContactsListView_Sorting(Object sender, ListViewSortEventArgs e)
  {
    ContactsListView.SelectedIndex = -1;
  }

  void ClearButton_Click(Object sender, EventArgs e)
  {
    ViewState["SelectedKey"] = null;
    ContactsListView.SelectedIndex = -1;
  }
    
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head id="Head1" runat="server">
    <title>ListView SelectedIndex Example</title>
  </head>
  <body>
    <form id="form1" runat="server">
        
      <h3>ListView SelectedIndex Example</h3>

      <asp:ListView ID="ContactsListView" 
        DataSourceID="ContactsDataSource" 
        DataKeyNames="ContactID"
        OnDataBound="ContactsListView_DataBound"
        OnSelectedIndexChanged="ContactsListView_SelectedIndexChanged"  
        OnPagePropertiesChanged="ContactsListView_PagePropertiesChanged"
        OnSorting="ContactsListView_Sorting"
        runat="server">
        <LayoutTemplate>
          <asp:Button runat="server" ID="SortButton" 
            CommandArgument="LastName" CommandName="Sort" Text="Sort" />
          <asp:Button runat="server" ID="ClearButton" 
            OnClick="ClearButton_Click" Text="Clear Selection" /><br />
          <table cellpadding="2" border="1" runat="server" id="tblContacts" width="640px">
            <tr runat="server" id="itemPlaceholder" />
          </table>
          <asp:DataPager runat="server" ID="PeopleDataPager" PageSize="20">
            <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:Label ID="FirstNameLabel" runat="server" Text='<%#Eval("FirstName") %>' />
              <asp:Label ID="LastNameLabel" runat="server" Text='<%#Eval("LastName") %>' />
            </td>
            <td>
              <asp:Label ID="EmailLabel" runat="server" Text='<%#Eval("EmailAddress") %>' />
            </td>
            <td>
              <asp:LinkButton ID="SelectButton" runat="server" CommandName="Select" Text="Select" />
            </td>
          </tr>
        </ItemTemplate>
        <SelectedItemTemplate>
          <tr runat="server" style="background-color:#B0C4DE">
            <td valign="top">
              <asp:Label ID="FirstNameLabel" runat="server" Text='<%#Eval("FirstName") %>' />
              <asp:Label ID="LastNameLabel" runat="server" Text='<%#Eval("LastName") %>' />
            </td>
            <td>
              <asp:Label ID="EmailLabel" runat="server" Text='<%#Eval("EmailAddress") %>' />
            </td>
            <td>&nbsp;</td>
          </tr>
        </SelectedItemTemplate>
      </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">
      </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">
    
  '<Snippet3>
  Sub ContactsListView_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
    If ContactsListView.SelectedIndex >= 0 Then
      ViewState("SelectedKey") = ContactsListView.SelectedValue
    Else
      ViewState("SelectedKey") = Nothing
    End If
  End Sub

  Sub ContactsListView_DataBound(ByVal sender As Object, ByVal e As EventArgs)
    For i As Integer = 0 To ContactsListView.Items.Count - 1
      ' Ignore values that cannot be cast as integer.
      Try
        If Convert.ToInt32(ContactsListView.DataKeys(i).Value) = Convert.ToInt32(ViewState("SelectedKey")) Then _
          ContactsListView.SelectedIndex = i
      Catch
      End Try
    Next
  End Sub
  '</Snippet3>

  Sub ContactsListView_PagePropertiesChanged(ByVal sender As Object, ByVal e As EventArgs)
    ContactsListView.SelectedIndex = -1
  End Sub

  Sub ContactsListView_Sorting(ByVal sender As Object, ByVal e As ListViewSortEventArgs)
    ContactsListView.SelectedIndex = -1
  End Sub

  Sub ClearButton_Click(ByVal sender As Object, ByVal e As EventArgs)
    ViewState("SelectedKey") = Nothing
    ContactsListView.SelectedIndex = -1
  End Sub
    
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head id="Head1" runat="server">
    <title>ListView SelectedIndex Example</title>
  </head>
  <body>
    <form id="form1" runat="server">
        
      <h3>ListView SelectedIndex Example</h3>

      <asp:ListView ID="ContactsListView" 
        DataSourceID="ContactsDataSource" 
        DataKeyNames="ContactID"
        OnDataBound="ContactsListView_DataBound"
        OnSelectedIndexChanged="ContactsListView_SelectedIndexChanged"  
        OnPagePropertiesChanged="ContactsListView_PagePropertiesChanged"
        OnSorting="ContactsListView_Sorting"
        runat="server">
        <LayoutTemplate>
          <asp:Button runat="server" ID="SortButton" 
            CommandArgument="LastName" CommandName="Sort" Text="Sort" />
          <asp:Button runat="server" ID="ClearButton" 
            OnClick="ClearButton_Click" Text="Clear Selection" /><br />
          <table cellpadding="2" border="1" runat="server" id="tblContacts" width="640px">
            <tr runat="server" id="itemPlaceholder" />
          </table>
          <asp:DataPager runat="server" ID="PeopleDataPager" PageSize="20">
            <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:Label ID="FirstNameLabel" runat="server" Text='<%#Eval("FirstName") %>' />
              <asp:Label ID="LastNameLabel" runat="server" Text='<%#Eval("LastName") %>' />
            </td>
            <td>
              <asp:Label ID="EmailLabel" runat="server" Text='<%#Eval("EmailAddress") %>' />
            </td>
            <td>
              <asp:LinkButton ID="SelectButton" runat="server" CommandName="Select" Text="Select" />
            </td>
          </tr>
        </ItemTemplate>
        <SelectedItemTemplate>
          <tr runat="server" style="background-color:#B0C4DE">
            <td valign="top">
              <asp:Label ID="FirstNameLabel" runat="server" Text='<%#Eval("FirstName") %>' />
              <asp:Label ID="LastNameLabel" runat="server" Text='<%#Eval("LastName") %>' />
            </td>
            <td>
              <asp:Label ID="EmailLabel" runat="server" Text='<%#Eval("EmailAddress") %>' />
            </td>
            <td>&nbsp;</td>
          </tr>
        </SelectedItemTemplate>
      </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">
      </asp:SqlDataSource>
      
    </form>
  </body>
</html>

注釈

イベントは SelectedIndexChanged 、コントロールが選択操作を処理した後に、項目の [選択] ボタンが ListView クリックされたときに発生します。 ([選択] ボタンは、プロパティが CommandName "Select" に設定されているボタン コントロールです)。これにより、現在選択されている項目に関する情報を使用して状態ラベルを更新するなど、このイベントが発生するたびにカスタム ルーチンを実行できます。

イベントを処理する方法の詳細については、次を参照してください。処理とイベントの発生します。

適用対象

こちらもご覧ください