DataKeyCollection Clase
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í.
Representa una colección que contiene el campo clave de cada registro de un origen de datos. Esta clase no puede heredarse.
public ref class DataKeyCollection sealed : System::Collections::ICollection
public sealed class DataKeyCollection : System.Collections.ICollection
type DataKeyCollection = class
interface ICollection
interface IEnumerable
Public NotInheritable Class DataKeyCollection
Implements ICollection
- Herencia
-
DataKeyCollection
- Implementaciones
Ejemplos
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>BaseDataList DataKeys Example</title>
<script runat="server">
ICollection CreateDataSource()
{
// Create sample data for the DataGrid control.
DataTable dt = new DataTable();
DataRow dr;
// Define the columns of the table.
dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));
// Define the primary key for the table as the IntegerValue
// column (column 0). To do this, first create an array of
// DataColumns to represent the primary key. The primary key can
// consist of multiple columns, but in this example, only
// one column is used.
DataColumn[] keys = new DataColumn[1];
keys[0] = dt.Columns[0];
// Then assign the array to the PrimaryKey property of the DataTable.
dt.PrimaryKey = keys;
// Populate the table with sample values.
for (int i = 0; i < 9; i++)
{
dr = dt.NewRow();
dr[0] = i;
dr[1] = "Item " + i.ToString();
dr[2] = 1.23 * (i + 1);
dt.Rows.Add(dr);
}
// To persist the data source between posts to the server,
// store it in session state.
Session["Source"] = dt;
DataView dv = new DataView(dt);
return dv;
}
void Page_Load(Object sender, EventArgs e)
{
// Load sample data only once, when the page is first loaded.
if (!IsPostBack)
{
ItemsGrid.DataSource = CreateDataSource();
ItemsGrid.DataBind();
}
}
void Delete_Command(Object sender, DataGridCommandEventArgs e)
{
// Retrieve the data table from session state.
DataTable dt = (DataTable)Session["Source"];
// Retrieve the data row to delete from the data table.
// Use the DataKeys property of the DataGrid control to get
// the primary key value of the selected row.
// Search the Rows collection of the data table for this value.
DataRow row;
row = dt.Rows.Find(ItemsGrid.DataKeys[e.Item.ItemIndex]);
// Delete the item selected in the DataGrid from the data source.
if(row != null)
{
dt.Rows.Remove(row);
}
// Save the data source.
Session["Source"] = dt;
// Create a DataView and bind it to the DataGrid control.
DataView dv = new DataView(dt);
ItemsGrid.DataSource = dv;
ItemsGrid.DataBind();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<h3>BaseDataList DataKeys Example</h3>
<asp:DataGrid id="ItemsGrid"
BorderColor="Black"
ShowFooter="False"
CellPadding="3"
CellSpacing="0"
HeaderStyle-BackColor="#aaaadd"
DataKeyField="IntegerValue"
OnDeleteCommand="Delete_Command"
runat="server">
<Columns>
<asp:ButtonColumn Text="Delete"
CommandName="Delete"/>
</Columns>
</asp:DataGrid>
</form>
</body>
</html>
<%@ Page Language="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>BaseDataList DataKeys and DataKeyField Example</title>
<script runat="server">
Function CreateDataSource() As ICollection
' Create sample data for the DataGrid control.
Dim dt As DataTable = New DataTable()
Dim dr As DataRow
' Define the columns of the table.
dt.Columns.Add(new DataColumn("IntegerValue", GetType(Integer)))
dt.Columns.Add(new DataColumn("StringValue", GetType(String)))
dt.Columns.Add(new DataColumn("CurrencyValue", GetType(Double)))
' Define the primary key for the table as the IntegerValue
' column (column 0). To do this, first create an array of
' DataColumns to represent the primary key. The primary key can
' consist of multiple columns, but in this example, only
' one column is used.
Dim keys(1) As DataColumn
keys(0) = dt.Columns(0)
' Then assign the array to the PrimaryKey property of the DataTable.
dt.PrimaryKey = keys
' Populate the table with sample values.
Dim i As Integer
For i = 0 To 8
dr = dt.NewRow()
dr(0) = i
dr(1) = "Item " & i.ToString()
dr(2) = 1.23 * (i + 1)
dt.Rows.Add(dr)
Next
' To persist the data source between posts to the server,
' store it in session state.
Session("Source") = dt
Dim dv As DataView = New DataView(dt)
Return dv
End Function
Sub Page_Load(sender As Object, e As EventArgs)
' Load sample data only once, when the page is first loaded.
If Not IsPostBack Then
ItemsGrid.DataSource = CreateDataSource()
ItemsGrid.DataBind()
End If
End Sub
Sub Delete_Command(sender As Object, e As DataGridCommandEventArgs)
' Retrieve the data table from session state.
Dim dt As DataTable = CType(Session("Source"), DataTable)
' Retrieve the data row to delete from the data table.
' Use the DataKeys property of the DataGrid control to get
' the primary key value of the selected row.
' Search the Rows collection of the data table for this value.
Dim row As DataRow
row = dt.Rows.Find(ItemsGrid.DataKeys(e.Item.ItemIndex))
' Delete the item selected in the DataGrid from the data source.
If Not row is Nothing Then
dt.Rows.Remove(row)
End If
' Save the data source.
Session("Source") = dt
' Create a DataView and bind it to the DataGrid control.
Dim dv As DataView = New DataView(dt)
ItemsGrid.DataSource = dv
ItemsGrid.DataBind()
End Sub
</script>
</head>
<body>
<form id="form1" runat="server">
<h3>BaseDataList DataKeys and DataKeyField Example</h3>
<asp:DataGrid id="ItemsGrid"
BorderColor="Black"
ShowFooter="False"
CellPadding="3"
CellSpacing="0"
HeaderStyle-BackColor="#aaaadd"
DataKeyField="IntegerValue"
OnDeleteCommand="Delete_Command"
runat="server">
<Columns>
<asp:ButtonColumn Text="Delete"
CommandName="Delete"/>
</Columns>
</asp:DataGrid>
</form>
</body>
</html>
Comentarios
La DataKeyCollection clase representa una colección de los campos clave del origen de datos. El campo clave de cada registro del origen de datos se almacena en esta colección. Esto le permite almacenar el campo de clave con un control de lista de datos sin mostrarlo en el control. Esta colección se rellena automáticamente con los valores del campo especificado por la BaseDataList.DataKeyField propiedad . Esta colección no permite agregar o quitar elementos manualmente de la colección.
El campo de clave se usa normalmente en un controlador para un evento, como ItemCommand
o DeleteCommand
, como parte de una cadena de consulta de actualización para revisar un registro específico en el origen de datos. El campo clave ayuda a la cadena de consulta de actualización a identificar el registro adecuado que se va a modificar.
Utilice la Count propiedad para determinar el número de elementos de la colección. Para recuperar mediante programación un campo de clave de , DataKeyCollectionuse uno de los métodos siguientes:
Use el indexador para obtener un único campo de clave de la colección, mediante la notación de matriz.
Utilice el CopyTo método para copiar el contenido de la colección en un System.Array objeto , que luego se puede usar para obtener elementos de la colección.
Use el GetEnumerator método para crear un System.Collections.IEnumerator objeto implementado, que se puede usar para obtener elementos de la colección.
Constructores
DataKeyCollection(ArrayList) |
Inicializa una nueva instancia de la clase DataKeyCollection. |
Propiedades
Count |
Obtiene el número de elementos de la colección. |
IsReadOnly |
Obtiene un valor que indica si se pueden modificar los elementos de DataKeyCollection. |
IsSynchronized |
Obtiene un valor que indica si DataKeyCollection está sincronizada (seguro para la ejecución de subprocesos). |
Item[Int32] |
Obtiene el campo clave en el índice especificado de la colección. |
SyncRoot |
Obtiene el objeto que se utiliza para sincronizar el acceso a DataKeyCollection. |
Métodos
CopyTo(Array, Int32) |
Copia todos los elementos de DataKeyCollection en el objeto Array especificado, empezando en el índice especificado en el objeto Array. |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetEnumerator() |
Crea un IEnumerator implementado que contiene todos los campos clave de DataKeyCollection. |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
Métodos de extensión
Cast<TResult>(IEnumerable) |
Convierte los elementos de IEnumerable en el tipo especificado. |
OfType<TResult>(IEnumerable) |
Filtra los elementos de IEnumerable en función de un tipo especificado. |
AsParallel(IEnumerable) |
Habilita la paralelización de una consulta. |
AsQueryable(IEnumerable) |
Convierte una interfaz IEnumerable en IQueryable. |