GridView.DataKeyNames Özellik

Tanım

Denetimde görüntülenen öğeler için birincil anahtar alanlarının adlarını içeren bir GridView dizi alır veya ayarlar.

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()

Özellik Değeri

String[]

Denetimde görüntülenen öğeler için birincil anahtar alanlarının adlarını içeren dizi GridView .

Öznitelikler

Örnekler

Aşağıdaki örnekte, veri kaynağının DataKeyNames anahtar alanını belirtmek için özelliğinin nasıl kullanılacağı gösterilmektedir. Örnekte, DataKeyNames işaretlemedeki öğesinin GridView özniteliği, adları ayırmak için virgül kullanarak iki anahtar alanı belirtir. Bu örneği çalıştırmak için aşağıdakilere sahip bir Web sitesi oluşturun:

  • AdventureWorksLT örnek veritabanına ve adlı AdventureWorksLTConnectionStringbir bağlantı dizesine bağlantı. AdventureWorksLT örnek veritabanını ayarlama hakkında bilgi için bkz. Nasıl yapılır: ASP.NET Geliştirme için AdventureWorksLT Örnek Veritabanı Ayarlama.

  • adlı AdventureWorksLTDataClassesDataContextbir LINQ-to-SQL veri bağlam sınıfı. Veri bağlamı SalesOrderDetails tablosu için bir sınıfa sahip olmalıdır. LINQ-to-SQL sınıfları oluşturma hakkında bilgi için bkz. 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>

Açıklamalar

Veri kaynağının DataKeyNames birincil anahtarını temsil eden alanı veya alanları belirtmek için özelliğini kullanın. Bu özelliği yalnızca her satırı benzersiz olarak tanımlamak için gereken alan veya alanlara ayarlamalısınız; Örneğin, bir tamsayı değeri her satırı benzersiz olarak tanımlarsa, Kimlik sütunu. Denetimin DataKeyNames otomatik güncelleştirme ve silme özelliklerinin GridView çalışması için özelliğini ayarlamanız gerekir. Bu anahtar alanlarının değerleri, güncelleştirilecek veya silinecek satırı belirtmek için veri kaynağı denetimine geçirilir.

Bir satırı güncelleştirirken veya silerken veri anahtarı değerini almanız gerekiyorsa veya GridViewDeleteEventArgs sınıfının özelliğini GridViewUpdateEventArgs kullanınKeys. Örneğin, e.Keys[0] bir RowUpdating veya RowDeleting olay işleyicisindeki ilk veri anahtarının değerini tutar.

Bir satır seçildiğinde veri anahtarı değerini almanız gerekiyorsa özelliğini kullanın SelectedDataKey .

DataKeyNames özelliği ayarlandığında, GridView denetim otomatik olarak koleksiyonunu belirtilen alan veya alanlardaki değerlerle doldurur DataKeys ve bu da her satırın birincil anahtarlarına erişmek için uygun bir yol sağlar.

Not

Denetim, GridView bu anahtar alanı değerlerini denetim durumunda depolar. Bu değerler hassas bilgiler içeriyorsa, özelliğini ViewStateEncryptionMode.Alwaysolarak ayarlayarak görünüm durumu şifrelemesini ViewStateEncryptionMode etkinleştirmeniz önemle önerilir.

Otomatik olarak oluşturulan alan sütunlarını kullandığınızda (özelliğini trueolarak ayarlayarakAutoGenerateColumns), GridView denetim özelliğinde belirtilen alan veya alanlara karşılık gelen sütunların DataKeyNames salt okunur olmasını sağlar.

Visible Sütun alanının özelliği olarak falseayarlanırsa, sütun denetimde GridView görüntülenmez ve sütunun verileri istemciye gidiş dönüş yapmaz. Görünür olmayan bir sütunun verilerinin istemci tarafından kullanılabilir olmasını istiyorsanız, alan adını özelliğine DataKeyNames ekleyin.

Şunlara uygulanır

Ayrıca bkz.