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.

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.

Atributos

Ejemplos

En el ejemplo siguiente se muestra cómo usar la DataKeyNames propiedad para especificar el campo clave del origen de datos. En el ejemplo, el DataKeyNames atributo del elemento en el GridView marcado especifica dos campos clave mediante una coma para separar los nombres. Para ejecutar este ejemplo, cree un sitio web que tenga lo siguiente:

  • Una conexión a la base de datos de ejemplo AdventureWorksLT y una cadena de conexión denominada AdventureWorksLTConnectionString. Para obtener información sobre cómo configurar la base de datos de ejemplo AdventureWorksLT, vea How to: Set Up an AdventureWorksLT Sample Database for ASP.NET Development.

  • Una clase de contexto de datos LINQ to-SQL denominada AdventureWorksLTDataClassesDataContext. El contexto de datos debe tener una clase para la tabla SalesOrderDetails. Para obtener información sobre cómo crear clases LINQ-to-SQL, vea 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. Solo debe establecer esta propiedad en el campo o los campos necesarios para identificar de forma única cada fila; por ejemplo, la columna ID si un valor entero identifica de forma única cada fila. Debe establecer la DataKeyNames propiedad para que funcionen las características de actualización y eliminación automáticas del GridView control. 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.

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 . Por ejemplo, e.Keys[0] contiene el valor de la primera clave de datos en un RowUpdating controlador de eventos o RowDeleting .

Si necesita recuperar el valor de la clave de datos cuando se selecciona una fila, use la SelectedDataKey propiedad .

Cuando se establece la DataKeyNames 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 acceder a las claves principales de cada fila.

Nota

El GridView control almacena estos valores de campo de clave en el estado del control. Si estos valores contienen información confidencial, se recomienda encarecidamente habilitar el cifrado de estado de vista estableciendo la ViewStateEncryptionMode propiedad ViewStateEncryptionMode.Alwaysen .

Cuando se usan columnas de campo generadas automáticamente (estableciendo la AutoGenerateColumns propiedad trueen ), el GridView control se asegura de que las columnas que corresponden al campo o los campos especificados en la DataKeyNames propiedad son de solo lectura.

Si la Visible propiedad de un campo de columna se establece falseen , la columna no se muestra en el GridView control y los datos de la columna no realizan un recorrido de ida y vuelta al cliente. Si desea que los datos de una columna que no esté visible estén disponibles para el cliente, agregue el nombre del campo a la DataKeyNames propiedad .

Se aplica a

Consulte también