DataKey 类用于表示数据绑定控件中某个记录的主键。记录的主键可以由数据源中的一个或多个字段组成。尽管 DataKey 类不是集合,但它可以存储多个键字段值。当调用 DataKey 类的某个构造函数

时,将填充键字段值。可以通过以下方法从 DataKey 对象中检索键字段值:

使用 DataKey.Item(Int32) 属性检索 DataKey 对象中特定索引位置的键字段值。

使用 DataKey.Item(String) 属性检索特定字段的键字段值。

使用 Value 属性检索 DataKey 对象中索引 0 位置的键字段值。当主键只包含一个字段时,此属性常用作检索记录键值的快捷方式。

使用 Values 属性创建可用于循环访问键字段值的 IOrderedDictionary 对象。

通常,当设置了数据绑定控件的 DataKeyNames 属性时,控件自动生成 DataKey 对象。DataKey 对象包含 DataKeyNames 属性中指定的一个或多个键字段的值。
一次显示一个记录的数据绑定控件(如 DetailsView 或 FormView)通常在它的 DataKey 属性中存储所显示的当前记录的 DataKey 对象。
一次显示多个记录的数据绑定控件(如 GridView) 通常在DataKeys 属性中存储DataKeyArray集合,该集合存储它的每个记录的 DataKey 对象。

正常情况下,DataKeys 属性用于检索 GridView 控件中特定数据行的 DataKey 对象。但是,如果您只需要检索当前选中行的 DataKey 对象,则可以简单地使用 SelectedDataKey 属性作为一种快捷方式。 这和从 DataKeys 集合检索位于指定索引(由 SelectedIndex 属性指定)位置的 DataKey 对象一样。还可以使用 SelectedValue 属性直接检索当前选中行的数据键值。

下面的代码示例演示如何使用 SelectedDataKey 属性来确定 GridView 控件中选中行的数据键值。


代码

<%@ Page language="C#" %>

<script runat="server">
  void CustomersGridView_SelectedIndexChanged(Object sender, EventArgs e)  
  {        
    // Display the primary key value of the selected row.
    Message.Text = "The primary key value of the selected row is " +
      CustomersGridView.SelectedDataKey.Value.ToString() + ".";    
  }
</script> <html>
  <body>
    <form runat="server">        
      <h3>GridView SelectedDataKey Example</h3>            
      <asp:label id="Message"
        forecolor="Red"
        runat="server"/>                
      <br/><br/>
      <asp:gridview id="CustomersGridView" 
        datasourceid="CustomersSource" 
        allowpaging="true"
        autogeneratecolumns="true"
        autogenerateselectbutton="true"    
        datakeynames="CustomerID"
        onselectedindexchanged="CustomersGridView_SelectedIndexChanged"   
        runat="server">                
        <selectedrowstyle backcolor="LightBlue"
          forecolor="DarkBlue"/>               
      </asp:gridview>
            
      <!-- This example uses Microsoft SQL Server and connects  -->
      <!-- to the Northwind sample database. Use an ASP.NET     -->
      <!-- expression to retrieve the connection string value   -->
      <!-- from the Web.config file.                            -->
      <asp:sqldatasource id="CustomersSource"
        selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]"
        connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" 
        runat="server"/>            
    </form></body></html>

下面的代码示例演示如何在主/从方案中将第二个键字段作为参数使用。使用 GridView 控件显示 Northwind 数据库的 Order Details 表中的记录。在 GridView 控件中选择某一记录时,将在

DetailsView 控件中显示来自 Products 表的产品详细信息。ProductID 是 GridView 控件中的第二个键名称。若要访问第二个键,请将 GridView1.SelectedDataKey[1] 的值用作 DetailsView 控件的

SqlDataSource 控件的 ControlParameter 对象的 PropertyName。


代码

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
  <title>Selecting Data Key Values</title>
</head>
<body>
  <form id="form1" runat="server">
  <div>
    <asp:SqlDataSource 
      ID="SqlDataSource1" 
      runat="server" 
      ConnectionString="<%$ ConnectionStrings:NorthWindConnectionString%>"
      ProviderName="System.Data.SqlClient" 
      SelectCommand="SELECT * FROM [Order Details]">
    </asp:SqlDataSource>     <asp:SqlDataSource 
      ID="SqlDataSource2" 
      runat="server" 
      ConnectionString="<%$ ConnectionStrings:NorthWindConnectionString%>"
      ProviderName="System.Data.SqlClient" 
      SelectCommand="SELECT * FROM [Products]WHERE [ProductID] = @productid">
      <SelectParameters>
        <asp:ControlParameter 
          Name="productid" 
          ControlID="GridView1" 
          PropertyName="SelectedDataKey[1]" />
      </SelectParameters>
    </asp:SqlDataSource>
    
  </div>   <asp:GridView 
    ID="GridView1" 
    runat="server" 
    AllowPaging="True" 
    AutoGenerateColumns="False"
    DataKeyNames="OrderID,ProductID" DataSourceID="SqlDataSource1">
    <Columns>
      <asp:CommandField ShowSelectButton="True" />
      <asp:BoundField DataField="OrderID" HeaderText="OrderID" ReadOnly="True"/>
      <asp:BoundField DataField="ProductID" HeaderText="ProductID" ReadOnly="True" />
      <asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" />
      <asp:BoundField DataField="Quantity" HeaderText="Quantity" />
      <asp:BoundField DataField="Discount" HeaderText="Discount" />
      </Columns>
    </asp:GridView>
    <br />
    <asp:DetailsView 
      ID="DetailsView1" 
      runat="server" 
      AutoGenerateRows="False" 
      DataKeyNames="ProductID"
      DataSourceID="SqlDataSource2" 
      Height="50px" Width="125px">
      <Fields>
        <asp:BoundField 
          DataField="ProductID" 
          HeaderText="ProductID" 
          InsertVisible="False"
          ReadOnly="True" />
        <asp:BoundField DataField="ProductName" HeaderText="ProductName"/>
        <asp:BoundField DataField="SupplierID" HeaderText="SupplierID"/>
        <asp:BoundField DataField="CategoryID" HeaderText="CategoryID" />
        <asp:BoundField DataField="QuantityPerUnit" HeaderText="QuantityPerUnit" />
        <asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" />
        <asp:BoundField DataField="UnitsInStock" HeaderText="UnitsInStock" />
        <asp:BoundField DataField="UnitsOnOrder" HeaderText="UnitsOnOrder" />
        <asp:BoundField DataField="ReorderLevel" HeaderText="ReorderLevel" />
        <asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued" />
      </Fields>
    </asp:DetailsView>
  </form>
</body>
</html>

【转自】http://www.cnblogs.com/Fskjb/archive/2010/05/02/1725887.html

DatakeyNames和datakey的更多相关文章

  1. GridView中DataKeyNames的应用小结

    一. GridView的DataKeyNames属性设为"ID,Name" GridView1.DataKeyNames = new string[]{ "ID" ...

  2. GridView绑定DataKeyNames以及如何取这些值

    DataKeyNames='FID'   //前台绑定一个值GridView1.DataKeys[e.Row.RowIndex].Value.ToString;-------------------- ...

  3. Gridview中DataKeyNames 设置多个主键 取值

    1.设置DataKeyNames a.F4  在属性面板中设置   多个值以逗号隔开  例如id,mane,sex b.通过后台代码 this.gridview.DataSource = Bind() ...

  4. 取得GridView某行的DataKey

    首先绑定DataKeyNames GridView.DataKeyNames = new string[] { "字段名称" }; 取值 string aaa= GridView. ...

  5. data-key

    在foreach或者each循环中给按钮赋予值 html中:data-key="@config.key" js里获取值: var key = $(this).data(" ...

  6. GridView设置多个DatakeyNames

    1.aspx页面GridView直接绑定DataKeyNames aspx设置: <asp:GridView ID="grvGrid" runat="server& ...

  7. 在HTML5规范中div中读取预存的data-[key]值

    HTML 代码: <div id="div_test" data-test="this is test" ></div> jQuery ...

  8. GridView主键列不让编辑时应该修改属性DataKeyNames

    原文发布时间为:2008-08-02 -- 来源于本人的百度文章 [由搬家工具导入] 为了防止GridView主键被编辑,应该在GridView属性DataKeyNames里面写上主键

  9. GridView详细介绍

    GridView控件的属性 表10.6 GridView控件的行为属性属性描述AllowPaging指示该控件是否支持分页.AllowSorting指示该控件是否支持排序.AutoGenerateCo ...

随机推荐

  1. 一、Flask路由介绍

    Flask介绍(轻量级的框架,非常快速的就能把程序搭建起来) Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是So ...

  2. utils工具类

    使用工具类的方法 目录结构 o代表项目层 util.js 用promise避免异步获取不到数据的问题 注意module.exports var APIURL = ''; function getApi ...

  3. golang-http-post

    func httpPost() { resp, err := http.Post("https://www.abcd123.top/api/v1/login", "app ...

  4. c++——大端序,小端序的排列问题

    #include<iostream> using namespace std; union TestModel { int i; char ch; }; int main() { unio ...

  5. ubuntu 安装kafka

    下载 wget http://mirrors.hust.edu.cn/apache/kafka/2.0.0/kafka_2.12-2.0.0.tgz 解压 tar -zxf kafka_2.12-2. ...

  6. JS ajax请求参数格式( formData 、serialize)

    $("#importBtn").click(function(){ if($("#conId").val() == ""){ alert(& ...

  7. 更改系统盘符后DFS无法复制故障处理

    DFS是微软的分布式文件系统,其中有命名空间和复制功能,我们有文件服务器,平时主要使用的是复制功能,保持文件服务器的数据实时同步,这一台我觉得还挺好用的,可以不借助备份软件就可以实现2台文件服务器的数 ...

  8. MyBatis DTD文件下载地址

    下载链接: http://mybatis.org/dtd/mybatis-3-config.dtdhttp://mybatis.org/dtd/mybatis-3-mapper.dtd

  9. abaqus 帮助文档 Substructure(子结构) 理论

    对于静态问题,可以缩减到只保留Retain Node的刚度矩阵和载荷矩阵: 但对于动力问题,还需要增加内部节点作为retain node,但这样会有点麻烦,更为常用的方式是保留子结构的模态和振型.

  10. 新建服务器出现错误 Peer authentication failed for user "postgres" 的解决办法

    用pgadmin3 新建服务器出现错误 Peer authentication failed for user "postgres" 在stackoverflow上找到答案,出现此 ...