Поделиться через


GridView.DataKeyNames Свойство

Определение

Возвращает или задает массив, содержащий имена полей первичного ключа для элементов, отображаемых в элементе GridView управления.

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 управления.

Атрибуты

Примеры

В следующем примере показано, как использовать DataKeyNames свойство для указания ключевого поля источника данных. В примере DataKeyNames атрибут элемента в разметке задает два ключевых поля с помощью запятой 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>
<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 Используйте свойство, чтобы указать поле или поля, представляющие первичный ключ источника данных. Это свойство следует задать только для поля или полей, необходимых для уникальной идентификации каждой строки; Например, столбец идентификатора, если целочисленное значение однозначно идентифицирует каждую строку. Для работы функции автоматического GridView обновления и удаления элемента управления необходимо задать DataKeyNames свойство. Значения этих ключевых полей передаются в систему управления источниками данных, чтобы указать строку для обновления или удаления.

Если необходимо получить значение ключа данных при обновлении или удалении строки, используйте Keys свойство класса GridViewUpdateEventArgs или GridViewDeleteEventArgs класса. Например, e.Keys[0] содержит значение первого ключа данных в обработчике RowUpdatingRowDeleting или обработчике событий.

Если необходимо получить значение ключа данных при выборе строки, используйте SelectedDataKey это свойство.

DataKeyNames Если свойство задано, GridView элемент управления автоматически заполняет коллекцию DataKeys значениями из указанного поля или полей, что обеспечивает удобный способ доступа к первичным ключам каждой строки.

Замечание

Элемент GridView управления сохраняет эти ключевые значения полей в состоянии элемента управления. Если эти значения содержат конфиденциальную информацию, настоятельно рекомендуется включить шифрование состояния просмотра, задав ViewStateEncryptionMode для свойства значение ViewStateEncryptionMode.Always.

При использовании автоматически созданных столбцов полей (задав AutoGenerateColumns для свойства trueзначение ), GridView элемент управления гарантирует, что столбцы, соответствующие полю или полям, указанным в DataKeyNames свойстве, доступны только для чтения.

Visible Если задано свойство поля столбца, столбец не отображается falseв GridView элементе управления, а данные для столбца не делают круглый путь к клиенту. Если вы хотите, чтобы данные для столбца, который не отображается для клиента, добавьте имя поля в DataKeyNames свойство.

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

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