GridView.DataKeyNames Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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.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 estado de control. Si estos valores contienen información confidencial, se recomienda encarecidamente habilitar el cifrado de estado de vista estableciendo la ViewStateEncryptionMode propiedad ViewStateEncryptionMode.Always
en .
Cuando se usan columnas de campo generadas automáticamente (estableciendo la AutoGenerateColumns propiedad true
en ), 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 false
en , 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 .