GridView.DataKeyNames Vlastnost

Definice

Získá nebo nastaví pole, které obsahuje názvy polí primárního klíče pro položky zobrazené v ovládacím prvku 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()

Hodnota vlastnosti

String[]

Pole obsahující názvy polí primárního klíče pro položky zobrazené v ovládacím GridView prvku.

Atributy

Příklady

Následující příklad ukazuje, jak použít DataKeyNames vlastnost k zadání pole klíče zdroje dat. V příkladu DataKeyNames atribut elementu GridView v kódu určuje dvě klíčová pole pomocí čárky k oddělení názvů. Chcete-li spustit tento příklad, vytvořte web, který má následující:

  • Připojení k ukázkové databázi AdventureWorksLT a připojovací řetězec s názvem AdventureWorksLTConnectionString. Informace o nastavení ukázkové databáze AdventureWorksLT najdete v tématu Postupy: Nastavení ukázkové databáze AdventureWorksLT pro vývoj ASP.NET.

  • Třída kontextu dat LINQ-to-SQL s názvem AdventureWorksLTDataClassesDataContext. Kontext dat musí mít třídu pro tabulku SalesOrderDetails. Informace o vytváření tříd LINQ-to-SQL najdete v tématu 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>

Poznámky

DataKeyNames Pomocí vlastnosti určete pole nebo pole, která představují primární klíč zdroje dat. Tuto vlastnost byste měli nastavit pouze na pole nebo pole, která jsou vyžadována k jedinečné identifikaci každého řádku; Například sloupec ID, pokud celočíselná hodnota jednoznačně identifikuje každý řádek. Vlastnost musíte nastavit, DataKeyNames aby funkce automatické aktualizace a odstraňování ovládacího prvku fungovaly GridView . Hodnoty těchto polí s klíči jsou předány ovládacímu prvku zdroje dat, aby bylo možné určit řádek, který se má aktualizovat nebo odstranit.

Pokud při aktualizaci nebo odstraňování řádku potřebujete načíst hodnotu datového klíče, použijte Keys vlastnost třídy GridViewUpdateEventArgs nebo GridViewDeleteEventArgs . Například e.Keys[0] obsahuje hodnotu prvního datového klíče v obslužné rutině RowUpdating události nebo RowDeleting .

Pokud potřebujete načíst hodnotu datového klíče při výběru řádku, použijte SelectedDataKey vlastnost .

DataKeyNames Když je vlastnost nastavena, GridView ovládací prvek automaticky naplní kolekci DataKeys hodnotami ze zadaného pole nebo polí, což poskytuje pohodlný způsob přístupu k primárním klíčům každého řádku.

Poznámka

Ovládací GridView prvek ukládá tyto hodnoty klíčových polí ve stavu ovládacího prvku. Pokud tyto hodnoty obsahují citlivé informace, důrazně doporučujeme povolit šifrování stavu zobrazení nastavením ViewStateEncryptionMode vlastnosti na ViewStateEncryptionMode.Always.

Pokud použijete automaticky generované sloupce polí (nastavením AutoGenerateColumns vlastnosti na true), GridView ovládací prvek zajistí, aby sloupce, které odpovídají poli nebo polím zadaným ve DataKeyNames vlastnosti, byly jen pro čtení.

Visible Pokud je vlastnost pole sloupce nastavena na false, sloupec se nezobrazí v ovládacím GridView prvku a data pro sloupec neprovádí odezvu klienta. Pokud chcete, aby data pro sloupec, který není viditelný, byla k dispozici pro klienta, přidejte do DataKeyNames vlastnosti název pole.

Platí pro

Viz také