BaseDataList.DataKeyField Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define o campo de chave na fonte de dados especificado pela propriedade DataSource.
public:
virtual property System::String ^ DataKeyField { System::String ^ get(); void set(System::String ^ value); };
public virtual string DataKeyField { get; set; }
[System.Web.UI.Themeable(false)]
public virtual string DataKeyField { get; set; }
member this.DataKeyField : string with get, set
[<System.Web.UI.Themeable(false)>]
member this.DataKeyField : string with get, set
Public Overridable Property DataKeyField As String
Valor da propriedade
O nome do campo de chave na fonte de dados especificado pela DataSource.
- Atributos
Exemplos
O exemplo de código a seguir demonstra como usar a DataKeyField propriedade para especificar o campo de chave para a fonte de dados.
<%@ 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>
Comentários
Use a DataKeyField propriedade para especificar o campo de chave na fonte de dados indicada pela DataSource propriedade . O campo especificado é usado para preencher a DataKeys coleção. Isso permite que você armazene o campo de chave com um controle de listagem de dados sem exibi-lo no controle . O campo de chave é comumente usado em um manipulador para um evento, como ItemCommand
ou DeleteCommand
, como parte de uma cadeia de caracteres de consulta de atualização para revisar um registro específico na fonte de dados. O campo de chave ajuda a atualizar a cadeia de caracteres de consulta a identificar o registro apropriado a ser modificado.
Essa propriedade não pode ser definida por temas ou temas de folha de estilos. Para obter mais informações, consulte ThemeableAttribute e ASP.NET Temas e Capas.