GridViewUpdateEventArgs.Keys Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene un dizionario delle coppie nome/valore dei campi che rappresentano la chiave primaria della riga da aggiornare.
public:
property System::Collections::Specialized::IOrderedDictionary ^ Keys { System::Collections::Specialized::IOrderedDictionary ^ get(); };
public System.Collections.Specialized.IOrderedDictionary Keys { get; }
member this.Keys : System.Collections.Specialized.IOrderedDictionary
Public ReadOnly Property Keys As IOrderedDictionary
Valore della proprietà
Un oggetto IOrderedDictionary contenente le coppie nome/valore dei campi che rappresentano la chiave primaria della riga da aggiornare.
Esempio
Nell'esempio seguente viene illustrato come usare la Keys proprietà per accedere ai valori dei campi chiave nella riga da aggiornare. I valori vengono quindi scritti in un file di log di record aggiornati.
<%@ Page language="C#" %>
<%@ import namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
void EmployeesGridView_RowUpdating(Object sender, GridViewUpdateEventArgs e)
{
// Record the update operation in a log file.
// Create the log text.
String logText = "";
// Append the key field values to the log text.
foreach (DictionaryEntry keyEntry in e.Keys)
{
logText += keyEntry.Key + "=" + keyEntry.Value + ";";
}
// Append the text to a log file.
StreamWriter sw;
sw = File.AppendText(Server.MapPath(null) + "\\updatelog.txt");
sw.WriteLine(logText);
sw.Flush();
sw.Close();
}
void EmployeesGridView_RowUpdated(Object sender, GridViewUpdatedEventArgs e)
{
if (e.Exception == null)
{
// The update operation succeeded. Clear the message label.
Message.Text = "";
}
else
{
// The update operation failed. Display an error message.
Message.Text = e.AffectedRows.ToString() + " rows updated. " + e.Exception.Message;
e.ExceptionHandled = true;
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>GridViewUpdateEventArgs Keys Example</title>
</head>
<body>
<form id="Form1" runat="server">
<h3>GridViewUpdateEventArgs Keys Example</h3>
<asp:label id="Message"
forecolor="Red"
runat="server"/>
<br/>
<!-- The GridView control automatically sets the columns -->
<!-- specified in the datakeynames attribute as read-only. -->
<!-- No input controls are rendered for these columns in -->
<!-- edit mode. -->
<asp:gridview id="EmployeesGridView"
datasourceid="EmployeesSqlDataSource"
DataKeyNames="EmployeeID"
autogenerateeditbutton="True"
onrowupdating="EmployeesGridView_RowUpdating"
onrowupdated="EmployeesGridView_RowUpdated"
runat="server">
</asp:gridview>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Northwind sample database. -->
<asp:sqldatasource id="EmployeesSqlDataSource"
selectcommand="SELECT [EmployeeID], [LastName], [FirstName], [HireDate] FROM [Employees]"
updatecommand="UPDATE [Employees] SET [LastName] = @LastName, [FirstName] = @FirstName, [HireDate] = @HireDate WHERE [EmployeeID] = @EmployeeID"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
runat="server" >
</asp:sqldatasource>
</form>
</body>
</html>
<%@ Page language="VB" %>
<%@ import namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Sub EmployeesGridView_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
' Record the update operation in a log file.
' Create the log text.
Dim logText As String = ""
' Append the key field values to the log text.
Dim keyEntry As DictionaryEntry
For Each keyEntry In e.Keys
logText += keyEntry.Key & "=" & keyEntry.Value & ";"
Next keyEntry
' Append the text to a log file.
Dim sw As StreamWriter
sw = File.AppendText(Server.MapPath(Nothing) & "\updatelog.txt")
sw.WriteLine(logText)
sw.Flush()
sw.Close()
End Sub
Sub EmployeesGridView_RowUpdated(ByVal sender As Object, ByVal e As GridViewUpdatedEventArgs)
If e.Exception Is Nothing Then
' The update operation succeeded. Clear the message label.
Message.Text = ""
Else
' The update operation failed. Display an error message.
Message.Text = e.AffectedRows.ToString() & " rows updated. " & e.Exception.Message
e.ExceptionHandled = True
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>GridViewUpdateEventArgs Keys Example</title>
</head>
<body>
<form id="Form1" runat="server">
<h3>GridViewUpdateEventArgs Keys Example</h3>
<asp:label id="Message"
forecolor="Red"
runat="server"/>
<br/>
<!-- The GridView control automatically sets the columns -->
<!-- specified in the datakeynames attribute as read-only. -->
<!-- No input controls are rendered for these columns in -->
<!-- edit mode. -->
<asp:gridview id="EmployeesGridView"
datasourceid="EmployeesSqlDataSource"
DataKeyNames="EmployeeID"
autogenerateeditbutton="True"
onrowupdating="EmployeesGridView_RowUpdating"
onrowupdated="EmployeesGridView_RowUpdated"
runat="server">
</asp:gridview>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Northwind sample database. -->
<asp:sqldatasource id="EmployeesSqlDataSource"
selectcommand="SELECT [EmployeeID], [LastName], [FirstName], [HireDate] FROM [Employees]"
updatecommand="UPDATE [Employees] SET [LastName] = @LastName, [FirstName] = @FirstName, [HireDate] = @HireDate WHERE [EmployeeID] = @EmployeeID"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
runat="server" >
</asp:sqldatasource>
</form>
</body>
</html>
Commenti
Quando la proprietà di un GridView controllo è impostata, usare la DataKeyNames Keys proprietà (dizionario) per accedere al valore della chiave primaria nella riga da aggiornare.
Nota
Per accedere ai valori dei campi non chiave, usare le NewValues proprietà o OldValues . La NewValues proprietà contiene i valori aggiornati, mentre la OldValues proprietà contiene i valori originali.
Il Keys dizionario viene popolato automaticamente con le coppie nome/valore del campo o dei campi specificati nella DataKeyNames proprietà. Se più campi formano la chiave primaria, viene aggiunta una voce separata al Keys dizionario per ogni campo chiave.
Per determinare il nome di un campo chiave, usare la DictionaryEntry.Key proprietà di un System.Collections.DictionaryEntry oggetto contenuto nel Keys dizionario. Per determinare il valore di un campo chiave, usare la DictionaryEntry.Value proprietà .