GridView.DataKeyNames Свойство

Определение

Возвращает или задает массив, содержащий имена первичных ключевых полей для элементов, отображенных в элементе управления GridView.Gets or sets an array that contains the names of the primary key fields for the items displayed in a GridView control.

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()

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

String[]

Массив, содержащий имена первичных ключевых полей для элементов, отображенных в элементе управления GridView.An array that contains the names of the primary key fields for the items displayed in a GridView control.

Атрибуты

Примеры

В следующем примере показано, как использовать DataKeyNames свойство для указания ключевого поля источника данных.The following example demonstrates how to use the DataKeyNames property to specify the key field of the data source. В этом примере DataKeyNames атрибут GridView элемента в разметке задает два ключевых поля, используя запятую для разделения имен.In the example, the DataKeyNames attribute of the GridView element in markup specifies two key fields by using a comma to separate the names. Чтобы запустить этот пример, создайте веб-сайт со следующим:To run this example, create a Web site that has the following:

  • Соединение с образцом базы данных AdventureWorksLT и строка подключения с именем AdventureWorksLTConnectionString .A connection to the AdventureWorksLT sample database and a connection string that is named AdventureWorksLTConnectionString. Сведения о настройке образца базы данных AdventureWorksLT см. в разделе как настроить образец базы данных AdventureWorksLT для разработки ASP.NET.For information about how to set up the AdventureWorksLT sample database, see How to: Set Up an AdventureWorksLT Sample Database for ASP.NET Development.

  • Класс контекста данных LINQ-to-SQL с именем AdventureWorksLTDataClassesDataContext .A LINQ-to-SQL data context class that is named AdventureWorksLTDataClassesDataContext. Контекст данных должен иметь класс для таблицы SalesOrderDetails.The data context must have a class for the SalesOrderDetails table. Дополнительные сведения о создании классов LINQ-to-SQL см. в разделе LINQ to SQL.For information about how to create LINQ-to-SQL classes, see 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>

Комментарии

Используйте DataKeyNames свойство, чтобы указать поле или поля, представляющие первичный ключ источника данных.Use the DataKeyNames property to specify the field or fields that represent the primary key of the data source. Это свойство следует задавать только для полей и полей, необходимых для уникальной идентификации каждой строки. Например, столбец ID, если целочисленное значение уникально определяет каждую строку.You should only set this property to the field or fields that are required to uniquely identify each row; for example, the ID column if an integer value uniquely identifies each row. DataKeyNamesЧтобы функции автоматического обновления и удаления элемента управления работали, необходимо задать свойство GridView .You must set the DataKeyNames property in order for the automatic update and delete features of the GridView control to work. Значения этих ключевых полей передаются в элемент управления источника данных, чтобы указать строку для обновления или удаления.The values of these key fields are passed to the data source control in order to specify the row to update or delete.

Если необходимо получить значение ключа данных при обновлении или удалении строки, используйте Keys свойство либо класса, либо GridViewUpdateEventArgs GridViewDeleteEventArgs .If you need to retrieve the data key value when updating or deleting a row, use the Keys property of either the GridViewUpdateEventArgs or GridViewDeleteEventArgs class. Например, e.Keys[0] содержит значение первого ключа данных в RowUpdating RowDeleting обработчике событий или.For example, e.Keys[0] holds the value of the first data key in a RowUpdating or RowDeleting event handler.

Если необходимо получить значение ключа данных при выборе строки, используйте SelectedDataKey свойство.If you need to retrieve the data key value when a row is selected, use the SelectedDataKey property.

Если DataKeyNames свойство задано, GridView элемент управления автоматически заполняет DataKeys коллекцию значениями из указанного поля или полей, что обеспечивает удобный способ доступа к первичным ключам каждой строки.When the DataKeyNames property is set, the GridView control automatically populates its DataKeys collection with the values from the specified field or fields, which provides a convenient way to access the primary keys of each row.

Примечание

GridViewЭлемент управления сохраняет эти значения ключевых полей в состоянии элемента управления.The GridView control stores these key field values in the control state. Если эти значения содержат конфиденциальные сведения, настоятельно рекомендуется включить шифрование состояния представления, задав ViewStateEncryptionMode для свойства значение ViewStateEncryptionMode.Always .If these values contain sensitive information, it is strongly recommended that you enable view-state encryption by setting the ViewStateEncryptionMode property to ViewStateEncryptionMode.Always.

При использовании автоматически создаваемых столбцов полей (путем присвоения AutoGenerateColumns свойству значения true ) GridView элемент управления гарантирует, что столбцы, соответствующие полю или полям, указанным в DataKeyNames свойстве, доступны только для чтения.When you use automatically generated field columns (by setting the AutoGenerateColumns property to true), the GridView control makes sure that the columns that correspond to the field or fields specified in the DataKeyNames property are read-only.

Если Visible свойство поля столбца имеет значение false , столбец не отображается в GridView элементе управления, а данные для этого столбца не выполняют круговой путь к клиенту.If the Visible property of a column field is set to false, the column is not displayed in the GridView control and the data for the column does not make a round trip to the client. Если требуется, чтобы данные для столбца, который не является видимым для клиента, были доступны клиенту, добавьте имя поля в DataKeyNames свойство.If you want the data for a column that is not visible to be available to the client, add the field name to the DataKeyNames property.

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

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