GridView.DataKeyNames Propiedad

Definición

Obtiene o establece una matriz que contiene los nombres de los campos de clave principal de los elementos mostrados en un control GridView.Gets or sets an array that contains the names of the primary key fields for the items displayed in a GridView control.

public:
 virtual property cli::array <System::String ^> ^ DataKeyNames { cli::array <System::String ^> ^ get(); void set(cli::array <System::String ^> ^ value); };
[System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.StringArrayConverter))]
public virtual string[] DataKeyNames { get; set; }
[<System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.StringArrayConverter))>]
member this.DataKeyNames : string[] with get, set
Public Overridable Property DataKeyNames As String()

Valor de propiedad

String[]

Matriz que contiene los nombres de los campos de clave principal de los elementos mostrados en un control GridView.An array that contains the names of the primary key fields for the items displayed in a GridView control.

Atributos

Ejemplos

En el ejemplo siguiente se muestra cómo utilizar la DataKeyNames propiedad para especificar el campo de clave del origen de datos.The following example demonstrates how to use the DataKeyNames property to specify the key field of the data source. En el ejemplo, el DataKeyNames atributo del GridView elemento en el marcado especifica dos campos clave mediante el uso de una coma para separar los nombres.In the example, the DataKeyNames attribute of the GridView element in markup specifies two key fields by using a comma to separate the names. Para ejecutar este ejemplo, cree un sitio web que tenga lo siguiente:To run this example, create a Web site that has the following:

  • Una conexión a la base de datos de ejemplo AdventureWorksLT y una cadena de conexión denominada AdventureWorksLTConnectionString .A connection to the AdventureWorksLT sample database and a connection string that is named AdventureWorksLTConnectionString. Para obtener información sobre cómo configurar la base de datos de ejemplo AdventureWorksLT, consulte Cómo: configurar una base de datos de ejemplo AdventureWorksLT para el desarrollo de ASP.net.For information about how to set up the AdventureWorksLT sample database, see How to: Set Up an AdventureWorksLT Sample Database for ASP.NET Development.

  • Una clase de contexto de datos de LINQ to SQL que se denomina AdventureWorksLTDataClassesDataContext .A LINQ-to-SQL data context class that is named AdventureWorksLTDataClassesDataContext. El contexto de datos debe tener una clase para la tabla SalesOrderDetails.The data context must have a class for the SalesOrderDetails table. Para obtener información sobre cómo crear clases de LINQ to SQL, vea LINQ to SQL.For information about how to create LINQ-to-SQL classes, see LINQ to SQL.

<asp:LinqDataSource ID="LinqDataSource1" runat="server" 
    ContextTypeName="AdventureWorksLTDataClassesDataContext"
    EnableDelete="True" EnableInsert="True" EnableUpdate="True" 
    TableName="SalesOrderDetails">
</asp:LinqDataSource>

<asp:GridView ID="GridView1" runat="server" 
    AutoGenerateColumns="False" 
    DataKeyNames="SalesOrderID,SalesOrderDetailID"
    DataSourceID="LinqDataSource1">
    <Columns>
        <asp:CommandField ShowDeleteButton="True" 
            ShowEditButton="True" />
        <asp:BoundField DataField="SalesOrderID" 
            HeaderText="SalesOrderID" ReadOnly="True"
            SortExpression="SalesOrderID" />
        <asp:BoundField DataField="SalesOrderDetailID" 
            HeaderText="SalesOrderDetailID" InsertVisible="False"
            ReadOnly="True" SortExpression="SalesOrderDetailID" />
        <asp:BoundField DataField="OrderQty" 
            HeaderText="OrderQty" SortExpression="OrderQty" />
        <asp:BoundField DataField="ProductID" 
            HeaderText="ProductID" SortExpression="ProductID" />
        <asp:BoundField DataField="UnitPrice" 
            HeaderText="UnitPrice" SortExpression="UnitPrice" />
        <asp:BoundField DataField="ModifiedDate" 
            HeaderText="ModifiedDate" SortExpression="ModifiedDate" />
    </Columns>
</asp:GridView>
<asp:LinqDataSource ID="LinqDataSource1" runat="server" 
    ContextTypeName="AdventureWorksLTDataClassesDataContext"
    EnableDelete="True" EnableInsert="True" EnableUpdate="True" 
    TableName="SalesOrderDetails">
</asp:LinqDataSource>

<asp:GridView ID="GridView1" runat="server" 
    AutoGenerateColumns="False" 
    DataKeyNames="SalesOrderID,SalesOrderDetailID"
    DataSourceID="LinqDataSource1">
    <Columns>
        <asp:CommandField ShowDeleteButton="True" 
            ShowEditButton="True" />
        <asp:BoundField DataField="SalesOrderID" 
            HeaderText="SalesOrderID" ReadOnly="True"
            SortExpression="SalesOrderID" />
        <asp:BoundField DataField="SalesOrderDetailID" 
            HeaderText="SalesOrderDetailID" InsertVisible="False"
            ReadOnly="True" SortExpression="SalesOrderDetailID" />
        <asp:BoundField DataField="OrderQty" 
            HeaderText="OrderQty" SortExpression="OrderQty" />
        <asp:BoundField DataField="ProductID" 
            HeaderText="ProductID" SortExpression="ProductID" />
        <asp:BoundField DataField="UnitPrice" 
            HeaderText="UnitPrice" SortExpression="UnitPrice" />
        <asp:BoundField DataField="ModifiedDate" 
            HeaderText="ModifiedDate" SortExpression="ModifiedDate" />
    </Columns>
</asp:GridView>

Comentarios

Utilice la DataKeyNames propiedad para especificar el campo o los campos que representan la clave principal del origen de datos.Use the DataKeyNames property to specify the field or fields that represent the primary key of the data source. Solo debe establecer esta propiedad en el campo o los campos que son necesarios para identificar de forma única cada fila; por ejemplo, la columna ID si un valor entero identifica de forma única cada fila.You should only set this property to the field or fields that are required to uniquely identify each row; for example, the ID column if an integer value uniquely identifies each row. Debe establecer la DataKeyNames propiedad para que funcionen las características de actualización y eliminación automáticas del GridView control.You must set the DataKeyNames property in order for the automatic update and delete features of the GridView control to work. Los valores de estos campos de clave se pasan al control de origen de datos para especificar la fila que se va a actualizar o eliminar.The values of these key fields are passed to the data source control in order to specify the row to update or delete.

Si necesita recuperar el valor de la clave de datos al actualizar o eliminar una fila, use la Keys propiedad de la GridViewUpdateEventArgs clase o GridViewDeleteEventArgs .If you need to retrieve the data key value when updating or deleting a row, use the Keys property of either the GridViewUpdateEventArgs or GridViewDeleteEventArgs class. Por ejemplo, e.Keys[0] contiene el valor de la primera clave de datos en RowUpdating un RowDeleting controlador de eventos o.For example, e.Keys[0] holds the value of the first data key in a RowUpdating or RowDeleting event handler.

Si necesita recuperar el valor de la clave de datos cuando se selecciona una fila, utilice la SelectedDataKey propiedad.If you need to retrieve the data key value when a row is selected, use the SelectedDataKey property.

Cuando DataKeyNames se establece la propiedad, el GridView control rellena automáticamente su DataKeys colección con los valores del campo o los campos especificados, lo que proporciona una manera cómoda de tener acceso a las claves principales de cada fila.When the DataKeyNames property is set, the GridView control automatically populates its DataKeys collection with the values from the specified field or fields, which provides a convenient way to access the primary keys of each row.

Nota

El GridView control almacena estos valores de campo clave en el estado del control.The GridView control stores these key field values in the control state. Si estos valores contienen información confidencial, se recomienda encarecidamente habilitar el cifrado del estado de vista estableciendo la ViewStateEncryptionMode propiedad en ViewStateEncryptionMode.Always .If these values contain sensitive information, it is strongly recommended that you enable view-state encryption by setting the ViewStateEncryptionMode property to ViewStateEncryptionMode.Always.

Al usar columnas de campo generadas automáticamente (estableciendo la AutoGenerateColumns propiedad en true ), el GridView control garantiza que las columnas que corresponden al campo o los campos especificados en la DataKeyNames propiedad sean de solo lectura.When you use automatically generated field columns (by setting the AutoGenerateColumns property to true), the GridView control makes sure that the columns that correspond to the field or fields specified in the DataKeyNames property are read-only.

Si la Visible propiedad de un campo de columna está establecida en false , la columna no se muestra en el GridView control y los datos de la columna no realizan un viaje de ida y vuelta al cliente.If the Visible property of a column field is set to false, the column is not displayed in the GridView control and the data for the column does not make a round trip to the client. Si desea que los datos de una columna que no está visible para el cliente estén disponibles, agregue el nombre del campo a la DataKeyNames propiedad.If you want the data for a column that is not visible to be available to the client, add the field name to the DataKeyNames property.

Se aplica a

Consulte también