GridView.DataKeyNames Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar eller anger en matris som innehåller namnen på de primära nyckelfälten för de objekt som visas i en GridView kontroll.
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()
Egenskapsvärde
En matris som innehåller namnen på primärnyckelfälten för de objekt som visas i en GridView kontroll.
- Attribut
Exempel
I följande exempel visas hur du använder DataKeyNames egenskapen för att ange nyckelfältet för datakällan. I exemplet DataKeyNames anger attributet för elementet GridView i markering två nyckelfält med hjälp av ett kommatecken för att separera namnen. Om du vill köra det här exemplet skapar du en webbplats med följande:
En anslutning till AdventureWorksLT-exempeldatabasen och en reťazec pripojenia med namnet
AdventureWorksLTConnectionString. Information om hur du konfigurerar AdventureWorksLT-exempeldatabasen finns i How to: Set Up an AdventureWorksLT Sample Database for ASP.NET Development.En LINQ-till-SQL-datakontextklass med namnet
AdventureWorksLTDataClassesDataContext. Datakontexten måste ha en klass för tabellen SalesOrderDetails. Information om hur du skapar LINQ-till-SQL-klasser finns i LINQ till 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>
Kommentarer
Använd egenskapen DataKeyNames för att ange det fält eller fält som representerar datakällans primära nyckel. Du bör bara ange den här egenskapen till det fält eller fält som krävs för att unikt identifiera varje rad. Till exempel ID-kolumnen om ett heltalsvärde unikt identifierar varje rad. Du måste ange DataKeyNames egenskapen för att funktionerna för automatisk uppdatering och borttagning av GridView kontrollen ska fungera. Värdena för dessa nyckelfält skickas till datakällans kontroll för att ange raden som ska uppdateras eller tas bort.
Om du behöver hämta datanyckelvärdet när du uppdaterar eller tar bort en rad använder du Keys egenskapen för antingen GridViewUpdateEventArgs klassen eller GridViewDeleteEventArgs . Innehåller till exempel e.Keys[0] värdet för den första datanyckeln i en eller RowUpdating händelsehanterareRowDeleting.
Om du behöver hämta datanyckelvärdet när en rad har valts använder du SelectedDataKey egenskapen .
När egenskapen DataKeyNames har angetts GridView fyller kontrollen automatiskt sin DataKeys samling med värdena från det angivna fältet eller fälten, vilket ger ett bekvämt sätt att komma åt de primära nycklarna för varje rad.
Note
Kontrollen GridView lagrar dessa nyckelfältvärden i kontrolltillståndet. Om dessa värden innehåller känslig information rekommenderar vi starkt att du aktiverar visningstillståndskryptering genom att ange ViewStateEncryptionMode egenskapen till ViewStateEncryptionMode.Always.
När du använder automatiskt genererade fältkolumner (genom att ange AutoGenerateColumns egenskapen till true) GridView ser kontrollen till att de kolumner som motsvarar fältet eller fälten DataKeyNames som anges i egenskapen är skrivskyddade.
Visible Om egenskapen för ett kolumnfält är inställd på falsevisas inte kolumnen i GridView kontrollen och data för kolumnen gör ingen tur och retur till klienten. Om du vill att data för en kolumn som inte är synlig ska vara tillgängliga för klienten lägger du till fältnamnet i DataKeyNames egenskapen.