Bagikan melalui


GridView.DataKeyNames Properti

Definisi

Mendapatkan atau mengatur array yang berisi nama bidang kunci primer untuk item yang GridView ditampilkan dalam kontrol.

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

Nilai Properti

String[]

Array yang berisi nama bidang kunci primer untuk item yang ditampilkan dalam GridView kontrol.

Atribut

Contoh

Contoh berikut menunjukkan cara menggunakan DataKeyNames properti untuk menentukan bidang kunci sumber data. Dalam contoh, DataKeyNames atribut GridView elemen dalam markup menentukan dua bidang kunci dengan menggunakan koma untuk memisahkan nama. Untuk menjalankan contoh ini, buat situs Web yang memiliki berikut ini:

  • Koneksi ke database sampel AdventureWorksLT dan string koneksi yang diberi nama AdventureWorksLTConnectionString. Untuk informasi tentang cara menyiapkan database sampel AdventureWorksLT, lihat Cara: Menyiapkan Database Sampel AdventureWorksLT untuk pengembangan ASP.NET.

  • Kelas konteks data LINQ-ke-SQL yang diberi nama AdventureWorksLTDataClassesDataContext. Konteks data harus memiliki kelas untuk tabel SalesOrderDetails. Untuk informasi tentang cara membuat kelas LINQ-ke-SQL, lihat LINQ ke 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>

Keterangan

DataKeyNames Gunakan properti untuk menentukan bidang atau bidang yang mewakili kunci utama sumber data. Anda hanya boleh mengatur properti ini ke bidang atau bidang yang diperlukan untuk mengidentifikasi setiap baris secara unik; misalnya, kolom ID jika nilai bilangan bulat secara unik mengidentifikasi setiap baris. Anda harus mengatur DataKeyNames properti agar pembaruan otomatis dan menghapus fitur GridView kontrol berfungsi. Nilai bidang kunci ini diteruskan ke kontrol sumber data untuk menentukan baris yang akan diperbarui atau dihapus.

Jika Anda perlu mengambil nilai kunci data saat memperbarui atau menghapus baris, gunakan Keys properti dari GridViewUpdateEventArgs kelas atau GridViewDeleteEventArgs . Misalnya, e.Keys[0] menyimpan nilai kunci data pertama dalam RowUpdating penanganan aktivitas atau RowDeleting .

Jika Anda perlu mengambil nilai kunci data saat baris dipilih, gunakan SelectedDataKey properti .

DataKeyNames Saat properti diatur, GridView kontrol secara otomatis mengisi koleksinya DataKeys dengan nilai dari bidang atau bidang yang ditentukan, yang menyediakan cara mudah untuk mengakses kunci utama setiap baris.

Catatan

Kontrol GridView menyimpan nilai bidang kunci ini dalam status kontrol. Jika nilai-nilai ini berisi informasi sensitif, sangat disarankan agar Anda mengaktifkan enkripsi status tampilan dengan mengatur ViewStateEncryptionMode properti ke ViewStateEncryptionMode.Always.

Saat Anda menggunakan kolom bidang yang dihasilkan secara otomatis (dengan mengatur AutoGenerateColumns properti ke true), GridView kontrol memastikan bahwa kolom yang sesuai dengan bidang atau bidang yang ditentukan dalam DataKeyNames properti bersifat baca-saja.

Visible Jika properti bidang kolom diatur ke false, kolom tidak ditampilkan dalam GridView kontrol dan data untuk kolom tidak melakukan perjalanan pulang pergi ke klien. Jika Anda ingin data untuk kolom yang tidak terlihat tersedia untuk klien, tambahkan nama bidang ke DataKeyNames properti .

Berlaku untuk

Lihat juga