GridView.DataKeyNames Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia tablicę zawierającą nazwy pól klucza podstawowego dla elementów wyświetlanych w kontrolce 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()
Wartość właściwości
Tablica zawierająca nazwy pól klucza podstawowego dla elementów wyświetlanych w kontrolce GridView .
- Atrybuty
Przykłady
W poniższym przykładzie pokazano, jak za pomocą DataKeyNames właściwości określić pole klucza źródła danych. W przykładzie DataKeyNames
atrybut GridView
elementu w adiustacji określa dwa pola klucza przy użyciu przecinka, aby oddzielić nazwy. Aby uruchomić ten przykład, utwórz witrynę sieci Web, która ma następujące elementy:
Połączenie z przykładową bazą danych AdventureWorksLT i parametrami połączenia o nazwie
AdventureWorksLTConnectionString
. Aby uzyskać informacje o sposobie konfigurowania przykładowej bazy danych AdventureWorksLT, zobacz How to: Set Up an AdventureWorksLT Sample Database for ASP.NET Development (Instrukcje: konfigurowanie przykładowej bazy danych AdventureWorksLT na potrzeby programowania ASP.NET).Klasa kontekstu danych LINQ-to-SQL o nazwie
AdventureWorksLTDataClassesDataContext
. Kontekst danych musi mieć klasę tabeli SalesOrderDetails. Aby uzyskać informacje na temat tworzenia klas LINQ-to-SQL, zobacz 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>
Uwagi
DataKeyNames Użyj właściwości , aby określić pole lub pola reprezentujące klucz podstawowy źródła danych. Tę właściwość należy ustawić tylko na pole lub pola wymagane do unikatowego identyfikowania każdego wiersza; na przykład kolumna ID, jeśli wartość całkowita unikatowo identyfikuje każdy wiersz. Aby funkcja automatycznej aktualizacji i usuwania kontrolki GridView działała, należy ustawić DataKeyNames właściwość . Wartości tych pól klucza są przekazywane do kontrolki źródła danych w celu określenia wiersza do zaktualizowania lub usunięcia.
Jeśli musisz pobrać wartość klucza danych podczas aktualizowania lub usuwania wiersza, użyj Keys
właściwości GridViewUpdateEventArgs klasy lub GridViewDeleteEventArgs . Na przykład e.Keys[0]
przechowuje wartość pierwszego klucza danych w procedurze RowUpdating obsługi zdarzeń lub RowDeleting .
Jeśli musisz pobrać wartość klucza danych po wybraniu wiersza, użyj SelectedDataKey właściwości .
Po ustawieniu DataKeyNames właściwości kontrolka GridView automatycznie wypełnia swoją DataKeys kolekcję wartościami z określonego pola lub pól, co zapewnia wygodny sposób uzyskiwania dostępu do kluczy podstawowych każdego wiersza.
Uwaga
Kontrolka GridView przechowuje te wartości pól klucza w stanie kontroli. Jeśli te wartości zawierają poufne informacje, zdecydowanie zaleca się włączenie szyfrowania stanu widoku przez ustawienie ViewStateEncryptionMode właściwości na ViewStateEncryptionMode.Always
.
Jeśli używasz automatycznie generowanych kolumn pól (przez ustawienie AutoGenerateColumns właściwości na true
), kontrolka GridView zapewnia, że kolumny, które odpowiadają polu lub polam określonym we DataKeyNames właściwości, są tylko do odczytu.
Visible Jeśli właściwość pola kolumny jest ustawiona na false
wartość , kolumna nie jest wyświetlana w GridView kontrolce, a dane dla kolumny nie robią rundy do klienta. Jeśli chcesz, aby dane dla kolumny, która nie jest widoczna dla klienta, dodaj nazwę pola do DataKeyNames właściwości .