Sdílet prostřednictvím


ListView.SelectedDataKey Vlastnost

Definice

Získá hodnotu datového klíče pro vybranou položku v ovládacím prvku ListView .

public:
 virtual property System::Web::UI::WebControls::DataKey ^ SelectedDataKey { System::Web::UI::WebControls::DataKey ^ get(); };
[System.ComponentModel.Browsable(false)]
public virtual System.Web.UI.WebControls.DataKey SelectedDataKey { get; }
[<System.ComponentModel.Browsable(false)>]
member this.SelectedDataKey : System.Web.UI.WebControls.DataKey
Public Overridable ReadOnly Property SelectedDataKey As DataKey

Hodnota vlastnosti

Datový klíč pro vybranou položku v ovládacím ListView prvku. Výchozí hodnota je null, což znamená, že není aktuálně vybrána žádná položka.

Atributy

Výjimky

Ve vlastnosti nejsou zadané DataKeyNames žádné datové klíče.

Příklady

Následující příklad ukazuje, jak použít druhé pole klíče jako parametr ve scénáři hlavního/podrobného. Ovládací ListView prvek se používá k zobrazení záznamů z tabulky Product Inventory databáze AdventureWorks. Když je v ovládacím ListView prvku vybraná položka, zobrazí se podrobnosti o produktu v jiném ListView ovládacím prvku. ProductID je název druhého klíče v prvním ListView ovládacím prvku. Pro přístup k druhému klíči kód jako objekt používá hodnotu ProductInventoryListView.SelectedDataKey[1] (ProductInventoryListView.SelectedDataKey(1) v jazyce Visual Basic).PropertyNameControlParameter Tento objekt parametru je zase používán ovládacím SqlDataSource prvek, ke kterému je druhý ListView ovládací prvek vázán.

<%@ 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">

  protected void ProductInventoryListView_PagePropertiesChanging(object sender, 
    PagePropertiesChangingEventArgs e)
  {
    ProductInventoryListView.SelectedIndex = -1;
  }
  
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head id="Head1" runat="server">
    <title>ListView SelectedDataKey Example</title>
    <style type="text/css">
      .header
      {
        border: 1px solid #008080;
        background-color: #008080;
        color: White;
      }
      .item td { border: 1px solid #008080; }
    </style>
  </head>
  <body>
    <form id="form1" runat="server">
    
      <h3>ListView SelectedDataKey Example</h3>
      
      <asp:ListView runat="server" 
        ID="ProductInventoryListView"
        DataSourceID="ProductInventoryDataSource" 
        DataKeyNames="LocationID,ProductID" 
          OnPagePropertiesChanging="ProductInventoryListView_PagePropertiesChanging">
        <LayoutTemplate>
          <b>Product Inventory</b>
          <br />
          <table width="400px" runat="server" id="tblProducts">
            <tr class="header" runat="server">
              <th runat="server">&nbsp;</th>
              <th runat="server">Product ID</th>
              <th runat="server">Location ID</th>
              <th runat="server">Shelf</th>
              <th runat="server">Bin</th>
              <th runat="server">Quantity</th>
            </tr>
            <tr runat="server" id="itemPlaceholder" />
          </table>
          <asp:DataPager runat="server" ID="ProductInventoryPager">
            <Fields>
              <asp:NextPreviousPagerField ShowFirstPageButton="true"
                ShowLastPageButton="true" />
            </Fields>
          </asp:DataPager>
        </LayoutTemplate>
        <ItemTemplate>
          <tr class="item" runat="server">
            <td>
              <asp:ImageButton runat="server" 
                ID="SelectButton" 
                Width="15"
                Height="15"
                ImageUrl="~/images/select.jpg" 
                CommandName="Select" />
            </td>
            <td>
              <asp:Label runat="server" ID="ProductIDLabel" Text='<%#Eval("ProductID") %>' />
            </td>
            <td>
              <asp:Label runat="server" ID="LocationIDLabel" Text='<%#Eval("LocationID") %>' />
            </td>
            <td>
              <asp:Label runat="server" ID="ShelfLabel" Text='<%#Eval("Shelf") %>' />
            </td>
            <td>
              <asp:Label runat="server" ID="BinLabel" Text='<%#Eval("Bin") %>' />
            </td>
            <td>
              <asp:Label runat="server" ID="QuantityLabel" Text='<%#Eval("Quantity") %>' />
            </td>
          </tr>
        </ItemTemplate>
      </asp:ListView>
      <br /><br />
          
      <asp:ListView runat="server" ID="ProductListView"
        DataSourceID="ProductDataSource">
        <LayoutTemplate>
          <b>Product Details</b>          
          <table runat="server" id="tblDetails">
            <tr runat="server" id="itemPlaceholder" />
          </table>
        </LayoutTemplate>
        <ItemTemplate>
          <tr runat="server">
            <td class="header">Product ID:</td>
            <td>
              <asp:Label runat="server" ID="ProductLabel" Text='<%#Eval("ProductID") %>' />
            </td>
          </tr>
          <tr runat="server">
            <td class="header">Name:</td>
            <td>
              <asp:Label runat="server" ID="NameLabel" Text='<%#Eval("Name") %>' />
            </td>
          </tr>
          <tr runat="server">
            <td class="header">Color:</td>
            <td>
              <asp:Label runat="server" ID="ColorLabel" Text='<%#Eval("Color") %>' />
            </td>
          </tr>
          <tr runat="server">
            <td class="header">Price:</td>
            <td>
              <asp:Label runat="server" ID="ListPriceLabel" Text='<%#Eval("ListPrice", "{0:c}") %>' />
            </td>
          </tr>
        </ItemTemplate>
      </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="ProductInventoryDataSource" runat="server" 
        ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
        SelectCommand="SELECT [ProductID], [LocationID], [Shelf], [Bin], [Quantity]
                       FROM Production.ProductInventory">
      </asp:SqlDataSource>
      
      <asp:SqlDataSource ID="ProductDataSource" runat="server" 
        ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
        SelectCommand="SELECT [ProductID], [Name], [Color], [ListPrice], [ProductNumber]
                         FROM Production.Product
                         WHERE ProductID = @ProductID
                         ORDER BY [Name]">
          <SelectParameters>
            <asp:ControlParameter Name="ProductID" 
              DefaultValue="0"
              ControlID="ProductInventoryListView" 
              PropertyName="SelectedDataKey[1]"  />
          </SelectParameters>
      </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">

  Protected Sub ProductInventoryListView_PagePropertiesChanging(ByVal sender As Object, _
    ByVal e As PagePropertiesChangingEventArgs)
    
    ProductInventoryListView.SelectedIndex = -1
    
  End Sub
  
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head id="Head1" runat="server">
    <title>ListView SelectedDataKey Example</title>
    <style type="text/css">
      .header
      {
        border: 1px solid #008080;
        background-color: #008080;
        color: White;
      }
      .item td { border: 1px solid #008080; }
    </style>
  </head>
  <body>
    <form id="form1" runat="server">
    
      <h3>ListView SelectedDataKey Example</h3>
      
      <asp:ListView runat="server" 
        ID="ProductInventoryListView"
        DataSourceID="ProductInventoryDataSource" 
        DataKeyNames="LocationID,ProductID" 
          OnPagePropertiesChanging="ProductInventoryListView_PagePropertiesChanging">
        <LayoutTemplate>
          <b>Product Inventory</b>
          <br />
          <table width="400px" runat="server" id="tblProducts">
            <tr class="header" runat="server">
              <th runat="server">&nbsp;</th>
              <th runat="server">Product ID</th>
              <th runat="server">Location ID</th>
              <th runat="server">Shelf</th>
              <th runat="server">Bin</th>
              <th runat="server">Quantity</th>
            </tr>
            <tr runat="server" id="itemPlaceholder" />
          </table>
          <asp:DataPager runat="server" ID="ProductInventoryPager">
            <Fields>
              <asp:NextPreviousPagerField ShowFirstPageButton="true"
                ShowLastPageButton="true" />
            </Fields>
          </asp:DataPager>
        </LayoutTemplate>
        <ItemTemplate>
          <tr class="item" runat="server">
            <td>
              <asp:ImageButton runat="server" 
                ID="SelectButton" 
                Width="15"
                Height="15"
                ImageUrl="~/images/select.jpg" 
                CommandName="Select" />
            </td>
            <td>
              <asp:Label runat="server" ID="ProductIDLabel" Text='<%#Eval("ProductID") %>' />
            </td>
            <td>
              <asp:Label runat="server" ID="LocationIDLabel" Text='<%#Eval("LocationID") %>' />
            </td>
            <td>
              <asp:Label runat="server" ID="ShelfLabel" Text='<%#Eval("Shelf") %>' />
            </td>
            <td>
              <asp:Label runat="server" ID="BinLabel" Text='<%#Eval("Bin") %>' />
            </td>
            <td>
              <asp:Label runat="server" ID="QuantityLabel" Text='<%#Eval("Quantity") %>' />
            </td>
          </tr>
        </ItemTemplate>
      </asp:ListView>
      <br /><br />
          
      <asp:ListView runat="server" ID="ProductListView"
        DataSourceID="ProductDataSource">
        <LayoutTemplate>
          <b>Product Details</b>          
          <table runat="server" id="tblDetails">
            <tr runat="server" id="itemPlaceholder" />
          </table>
        </LayoutTemplate>
        <ItemTemplate>
          <tr runat="server">
            <td class="header">Product ID:</td>
            <td>
              <asp:Label runat="server" ID="ProductLabel" Text='<%#Eval("ProductID") %>' />
            </td>
          </tr>
          <tr runat="server">
            <td class="header">Name:</td>
            <td>
              <asp:Label runat="server" ID="NameLabel" Text='<%#Eval("Name") %>' />
            </td>
          </tr>
          <tr runat="server">
            <td class="header">Color:</td>
            <td>
              <asp:Label runat="server" ID="ColorLabel" Text='<%#Eval("Color") %>' />
            </td>
          </tr>
          <tr runat="server">
            <td class="header">Price:</td>
            <td>
              <asp:Label runat="server" ID="ListPriceLabel" Text='<%#Eval("ListPrice", "{0:c}") %>' />
            </td>
          </tr>
        </ItemTemplate>
      </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="ProductInventoryDataSource" runat="server" 
        ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
        SelectCommand="SELECT [ProductID], [LocationID], [Shelf], [Bin], [Quantity]
                       FROM Production.ProductInventory">
      </asp:SqlDataSource>
      
      <asp:SqlDataSource ID="ProductDataSource" runat="server" 
        ConnectionString="<%$ ConnectionStrings:AdventureWorks_DataConnectionString %>"
        SelectCommand="SELECT [ProductID], [Name], [Color], [ListPrice], [ProductNumber]
                         FROM Production.Product
                         WHERE ProductID = @ProductID
                         ORDER BY [Name]">
          <SelectParameters>
            <asp:ControlParameter Name="ProductID" 
              DefaultValue="0"
              ControlID="ProductInventoryListView" 
              PropertyName="SelectedDataKey[1]"  />
          </SelectParameters>
      </asp:SqlDataSource>
       
    </form>
  </body>
</html>

Poznámky

DataKeyNames Když je vlastnost nastavena, ListView ovládací prvek vytvoří DataKey objekt pro každou položku v ovládacím prvku pomocí hodnoty nebo hodnot zadaného pole nebo polí. Objekty DataKey se pak přidají do kolekce ovládacího prvku DataKeys . Obvykle se DataKeys vlastnost používá k načtení objektu DataKey pro konkrétní položku dat v ovládacím ListView prvku. Pokud však chcete načíst pouze DataKey objekt aktuálně vybrané položky, můžete vlastnost použít SelectedDataKey jako zástupce.

SelectedDataKey Použití vlastnosti je stejné jako načtení objektu DataKeyDataKeys z kolekce v indexu, který je určen SelectedIndex vlastností. Vlastnost můžete také použít k přímému SelectedValue načtení hodnoty datového klíče pro aktuálně vybranou položku.

Pokud vytváříte ControlParameter objekt a chcete získat přístup k jinému poli klíče než k prvnímu poli, použijte indexovanou SelectedDataKey vlastnost ve PropertyName vlastnosti objektu ControlParameter .

Platí pro

Viz také