共用方式為


GridView.DataKeyNames 屬性

定義

取得或設定陣列,這個陣列包含 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()

屬性值

String[]

陣列,包含 GridView 控制項中所顯示項目的主索引鍵欄位名稱。

屬性

範例

下列範例示範如何使用 DataKeyNames 屬性來指定數據源的索引鍵字段。 在此範例中, DataKeyNames 標記中元素的 GridView 屬性會使用逗號分隔名稱來指定兩個索引鍵字段。 若要執行此範例,請建立具有下列項目的網站:

  • AdventureWorksLT 範例資料庫的連線,以及名為的 AdventureWorksLTConnectionString連接字串。 如需如何設定 AdventureWorksLT 範例資料庫的詳細資訊,請參閱 如何:設定 AdventureWorksLT 範例資料庫以進行 ASP.NET 開發

  • 名為 AdventureWorksLTDataClassesDataContext的 LINQ-to-SQL 資料內容類別。 數據內容必須具有 SalesOrderDetails 數據表的類別。 如需如何建立 LINQ to-SQL 類別的詳細資訊,請參閱 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>

備註

DataKeyNames使用屬性來指定代表數據源主鍵的欄位或欄位。 您應該只將此屬性設定為唯一識別每個數據列所需的欄位或欄位;例如,如果整數值可唯一識別每個數據列,則為ID數據行。 您必須設定 DataKeyNames 屬性,才能讓控件的 GridView 自動更新和刪除功能運作。 這些索引鍵欄位的值會傳遞至數據源控件,以指定要更新或刪除的數據列。

如果您需要在更新或刪除資料列時擷取資料鍵值,請使用 KeysGridViewDeleteEventArgs 類別的 GridViewUpdateEventArgs 屬性。 例如,e.Keys[0]保留 或 RowDeleting 事件處理程式中第一個RowUpdating數據索引鍵的值。

如果您需要在選取數據列時擷取數據鍵值,請使用 SelectedDataKey 屬性。

DataKeyNames設定屬性時,GridView控件會自動將指定字段或欄位的值填入其DataKeys集合中,以提供方便的方式存取每個數據列的主鍵。

注意

控制件 GridView 會將這些索引鍵域值儲存在控制項狀態中。 如果這些值包含敏感性資訊,強烈建議您將 屬性設定 ViewStateEncryptionModeViewStateEncryptionMode.Always來啟用檢視狀態加密。

當您藉由將 屬性設定 AutoGenerateColumnstrue) 來使用自動產生的欄位資料行 (時, GridView 控件可確保對應至屬性中所 DataKeyNames 指定字段的數據行是只讀的。

如果數據 Visible 行欄位的 屬性設定 false為 ,則數據行不會顯示在控件中 GridView ,而且數據行的數據不會進行往返用戶端。 如果您想要用戶端看不到的數據行數據,請將功能變數名稱新增至 DataKeyNames 屬性。

適用於

另請參閱