DetailsView.DataKey Eigenschap

Definitie

Hiermee haalt u een DataKey object op dat de primaire sleutel van de weergegeven record vertegenwoordigt.

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

Waarde van eigenschap

Een DataKey die de primaire sleutel van de weergegeven record vertegenwoordigt.

Kenmerken

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u de DataKey eigenschap gebruikt om het sleutelveld en de bijbehorende waarde voor de huidige record te bepalen.


<%@ 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 CustomerDetailView_ItemUpdated(Object sender, 
    DetailsViewUpdatedEventArgs e)
  {
  
    // Create a dictionary that contains the key fields and values using
    // the AllValues method of the DataKey object contained in the DataKey 
    // property.
    IOrderedDictionary keyList = CustomerDetailView.DataKey.Values;

    // Get the ArrayList objects that represent the key fields and values.
    ArrayList keys = (ArrayList)keyList.Keys;
    ArrayList values = (ArrayList)keyList.Values;

    // Get the key field and value for the current record. 
    String keyField = keys[0].ToString();
    String keyValue = values[0].ToString();
    
    // Log the update operation using the key field and value.
    LogUpdate(keyField, keyValue);

  }

  void LogUpdate(String keyField, String keyValue)
  {
    // Insert code to log the update operation.
  }

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>DetailsView DataKey Example</title>
</head>
<body>
    <form id="Form1" runat="server">
        
      <h3>DetailsView DataKey Example</h3>
                
        <asp:detailsview id="CustomerDetailView"
          datasourceid="DetailsViewSource"
          datakeynames="CustomerID"
          autogeneraterows="true"
          autogenerateeditbutton="true" 
          allowpaging="true"
          onitemupdated="CustomerDetailView_ItemUpdated" 
          runat="server">
               
          <headerstyle backcolor="Navy"
            forecolor="White"/>
                    
        </asp:detailsview>
        
        <!-- This example uses Microsoft SQL Server and connects  -->
        <!-- to the Northwind sample database. Use an ASP.NET     -->
        <!-- expression to retrieve the connection string value   -->
        <!-- from the web.config file.                            -->
        <asp:SqlDataSource ID="DetailsViewSource" runat="server" 
          ConnectionString=
            "<%$ ConnectionStrings:NorthWindConnectionString%>"
                    InsertCommand="INSERT INTO [Customers]([CustomerID], 
            [CompanyName], [Address], [City], [PostalCode], [Country]) 
            VALUES (@CustomerID, @CompanyName, @Address, @City, 
            @PostalCode, @Country)"
          SelectCommand="Select [CustomerID], [CompanyName], 
            [Address], [City], [PostalCode], [Country] From [Customers]"
          UpdateCommand="UPDATE [Customers] SET 
            [CompanyName] = @CompanyName, 
            [Address] = @Address, [City] = @City,
            [PostalCode] = @PostalCode, [Country] = @Country
            WHERE [CustomerID] = @CustomerID">
        </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 CustomerDetailView_ItemUpdated(ByVal sender As Object, _
        ByVal e As DetailsViewUpdatedEventArgs)
    
        ' Create a dictionary that contains the key fields and values 
        ' using the AllValues method of the DataKey object contained 
        ' in the DataKey property.
        
        Dim keyList As IOrderedDictionary = _
            CustomerDetailsView.DataKey.Values

        ' Get the ArrayList objects that represent the key fields 
        ' and values.
        Dim keys As ArrayList = CType(keyList.Keys, ArrayList)
        Dim values As ArrayList = CType(keyList.Values, ArrayList)

        ' Get the key field and value for the current record. 
        Dim keyField As String = keys(0).ToString()
        Dim keyValue As String = values(0).ToString()
    
        ' Log the update operation using the key field and value.
        LogUpdate(keyField, keyValue)

    End Sub

    Sub LogUpdate(ByVal keyField As String, ByVal keyValue As String)
  
        ' Insert code to log the update operation.
  
    End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>
            DetailsView DataKey Example</title>
</head>
<body>
    <form id="Form1" runat="server">
        <h3>
            DetailsView DataKey Example</h3>
        <asp:DetailsView ID="CustomerDetailsView" 
          DataSourceID="DetailsViewSource" 
          DataKeyNames="CustomerID"
          AutoGenerateRows="true" 
          AutoGenerateEditButton="true" 
          AllowPaging="true" 
          OnItemUpdated="CustomerDetailView_ItemUpdated"
          runat="server">
          
          <HeaderStyle BackColor="Navy" ForeColor="White" />
        </asp:DetailsView>

        <!-- This example uses Microsoft SQL Server and connects  -->
        <!-- to the Northwind sample database. Use an ASP.NET     -->
        <!-- expression to retrieve the connection string value   -->
        <!-- from the web.config file.                            -->
        <asp:SqlDataSource ID="DetailsViewSource" runat="server" 
          ConnectionString=
            "<%$ ConnectionStrings:NorthWindConnectionString%>"
          InsertCommand="INSERT INTO [Customers]([CustomerID],
            [CompanyName], [Address], [City], [PostalCode], [Country]) 
            VALUES (@CustomerID, @CompanyName, @Address, @City, 
            @PostalCode, @Country)"
            SelectCommand="Select [CustomerID], [CompanyName], 
              [Address], [City], [PostalCode], [Country] 
              From [Customers]"
            UpdateCommand="UPDATE [Customers] SET [CompanyName] = @CompanyName, 
            [Address] = @Address, [City] = @City,
            [PostalCode] = @PostalCode, [Country] = @Country
            WHERE [CustomerID] = @CustomerID"></asp:SqlDataSource>
    </form>
</body>
</html>

Opmerkingen

Wanneer de DataKeyNames eigenschap is ingesteld, maakt het DetailsView besturingselement automatisch een DataKey object dat het sleutelveld of de velden voor de huidige record vertegenwoordigt. Gebruik de DataKey eigenschap om dit DataKey object op te halen. Deze eigenschap wordt vaak gebruikt om de sleutels en de bijbehorende waarden te verkrijgen voor de velden die in de DataKeyNames eigenschap zijn opgegeven.

Note

Als snelkoppeling kunt u ook de SelectedValue eigenschap gebruiken om de waarde te bepalen van het eerste sleutelveld dat in de DataKeyNames eigenschap wordt vermeld.

Van toepassing op

Zie ook