GridView.DataKeyNames 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置一个数组,该数组包含了显示在 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()
属性值
一个数组,其中包含了显示在 GridView 控件中的项的主键字段的名称。
- 属性
示例
以下示例演示如何使用 DataKeyNames 属性指定数据源的键字段。 在此示例中, DataKeyNames
标记中 元素的 GridView
属性使用逗号分隔名称来指定两个键字段。 若要运行此示例,请创建具有以下项的网站:
与 AdventureWorksLT 示例数据库的连接,以及名为 的
AdventureWorksLTConnectionString
连接字符串。 有关如何设置 AdventureWorksLT 示例数据库的信息,请参阅 如何:为 ASP.NET 开发设置 AdventureWorksLT 示例数据库。名为
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 才能正常工作。 这些键字段的值将传递给数据源控件,以便指定要更新或删除的行。
如果在更新或删除行时需要检索数据键值,请使用 Keys
或 GridViewDeleteEventArgs 类的 GridViewUpdateEventArgs 属性。 例如, e.Keys[0]
保留 或 RowDeleting 事件处理程序中第一个RowUpdating数据键的值。
如果需要在选择行时检索数据键值,请使用 SelectedDataKey 属性。
DataKeyNames设置 属性后,GridView控件会自动使用指定字段或字段中的值填充其DataKeys集合,这提供了一种访问每行主键的便捷方法。
注意
控件 GridView 将这些键字段值存储在控件状态中。 如果这些值包含敏感信息,强烈建议通过将 属性设置为 ViewStateEncryptionModeViewStateEncryptionMode.Always
来启用视图状态加密。
通过将 属性设置为 AutoGenerateColumnstrue
) 使用自动生成的字段列 (时, GridView 控件可确保与属性中指定的 DataKeyNames 字段相对应的列是只读的。
Visible如果列字段的 属性设置为 false
,则列不会显示在 控件中GridView,并且列的数据不会往返于客户端。 如果希望客户端可以使用不可见的列的数据,请将字段名称添加到 DataKeyNames 属性。