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


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

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

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

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

Примечание

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

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

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

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

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