GridViewUpdateEventArgs.Keys Свойство

Определение

Возвращает словарь пар "имя-значение", которые представляют первичный ключ обновляемой строки.Gets a dictionary of field name/value pairs that represent the primary key of the row to update.

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

Значение свойства

IOrderedDictionary

Объект IOrderedDictionary, содержащий пары "имя-значение", которые представляют первичный ключ обновляемой строки.A IOrderedDictionary object containing field name/value pairs that represent the primary key of the row to update.

Примеры

В следующем примере показано, как использовать Keys свойство для доступа к значениям ключевых полей в обновляемой строке.The following example demonstrates how to use the Keys property to access the values of the key fields in the row to update. Затем значения записываются в файл журнала обновленных записей.The values are then written to a log file of updated records.


<%@ 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>

Комментарии

Если DataKeyNames свойство GridView элемента управления задано, используйте Keys свойство (Dictionary) для доступа к значению первичного ключа в обновляемой строке.When the DataKeyNames property of a GridView control is set, use the Keys property (dictionary) to access the value of the primary key in the row to update.

Примечание

Чтобы получить доступ к значениям неключевых полей, используйте NewValues OldValues свойства или.To access the values of the non-key fields, use the NewValues or OldValues properties. NewValuesСвойство содержит обновленные значения, а OldValues свойство содержит исходные значения.The NewValues property contains the updated values, while the OldValues property contains the original values.

KeysСловарь автоматически заполняется парами "имя-значение" поля или полей, указанных в DataKeyNames свойстве.The Keys dictionary is automatically populated with the name/value pairs of the field or fields specified in the DataKeyNames property. Если первичный ключ формирует несколько полей, в Keys словарь для каждого ключевого поля добавляется отдельная запись.If multiple fields form the primary key, a separate entry is added to the Keys dictionary for each key field.

Чтобы определить имя ключевого поля, используйте DictionaryEntry.Key свойство System.Collections.DictionaryEntry объекта, содержащегося в Keys словаре.To determine the name of a key field, use the DictionaryEntry.Key property of a System.Collections.DictionaryEntry object contained in the Keys dictionary. Чтобы определить значение ключевого поля, используйте DictionaryEntry.Value свойство.To determine the value of a key field, use the DictionaryEntry.Value property.

Применяется к

См. также раздел