关于DataList的DataKeyField 属性

来源:互联网 发布:dev c 编程 编辑:程序博客网 时间:2024/04/25 12:39

.NET Framework 类库
BaseDataList..::.

更新:2007 年 11 月

获取或设置由 DataSource 属性指定的数据源中的键字段。

命名空间:  System.Web.UI.WebControls
程序集:  System.Web(在 System.Web.dll 中)

Visual Basic(声明)
<ThemeableAttribute(False)> _Public Overridable Property DataKeyField As String
Visual Basic (用法)
Dim instance As BaseDataListDim value As Stringvalue = instance.DataKeyFieldinstance.DataKeyField = value
C#
[ThemeableAttribute(false)]public virtual string DataKeyField { get; set; }
Visual C++
[ThemeableAttribute(false)]public:virtual property String^ DataKeyField {    String^ get ();    void set (String^ value);}
J#
/** @property *//** @attribute ThemeableAttribute(false) */public String get_DataKeyField()/** @property *//** @attribute ThemeableAttribute(false) */public  void set_DataKeyField(String value)
JScript
public function get DataKeyField () : Stringpublic function set DataKeyField (value : String)
ASP.NET
<asp:BaseDataList DataKeyField="String" />

属性值

类型:System..::.String

DataSource 指定的数据源中的键字段的名称。

使用 DataKeyField 属性指定由 DataSource 属性指示的数据源中的键字段。指定的字段用于填充 DataKeys 集合。这使您可以用数据列表控件存储键字段而无需在控件中显示它。键字段通常在事件处理程序(例如 ItemCommandDeleteCommand)中用作更新查询字符串的一部分,以修改数据源中的特定记录。键字段帮助更新查询字符串标识要修改的适当记录。

无法通过主题或样式表主题设置此属性。有关更多信息,请参见 ThemeableAttributeASP.NET 主题和外观概述

下面的代码示例演示如何使用 DataKeyField 属性来指定数据源的键字段。

Visual Basic
<%@ Page Language="VB" AutoEventWireup="True" %><%@ Import Namespace="System.Data" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html  ><head runat="server">    <title>BaseDataList DataKeys and DataKeyField Example</title><script runat="server">      Function CreateDataSource() As ICollection          ' Create sample data for the DataGrid control.         Dim dt As DataTable = New DataTable()         Dim dr As DataRow         ' Define the columns of the table.         dt.Columns.Add(new DataColumn("IntegerValue", GetType(Integer)))         dt.Columns.Add(new DataColumn("StringValue", GetType(String)))         dt.Columns.Add(new DataColumn("CurrencyValue", GetType(Double)))         ' Define the primary key for the table as the IntegerValue          ' column (column 0). To do this, first create an array of          ' DataColumns to represent the primary key. The primary key can         ' consist of multiple columns, but in this example, only         ' one column is used.         Dim keys(1) As DataColumn         keys(0) = dt.Columns(0)         ' Then assign the array to the PrimaryKey property of the DataTable.          dt.PrimaryKey = keys         ' Populate the table with sample values.         Dim i As Integer         For i = 0 To 8             dr = dt.NewRow()            dr(0) = i            dr(1) = "Item " & i.ToString()            dr(2) = 1.23 * (i + 1)            dt.Rows.Add(dr)         Next         ' To persist the data source between posts to the server,          ' store it in session state.           Session("Source") = dt         Dim dv As DataView = New DataView(dt)         Return dv      End Function      Sub Page_Load(sender As Object, e As EventArgs)          ' Load sample data only once, when the page is first loaded.         If Not IsPostBack Then             ItemsGrid.DataSource = CreateDataSource()            ItemsGrid.DataBind()         End If      End Sub      Sub Delete_Command(sender As Object, e As DataGridCommandEventArgs)         ' Retrieve the data table from session state.         Dim dt As DataTable = CType(Session("Source"), DataTable)         ' Retrieve the data row to delete from the data table.          ' Use the DataKeys property of the DataGrid control to get          ' the primary key value of the selected row.          ' Search the Rows collection of the data table for this value.          Dim row As DataRow         row = dt.Rows.Find(ItemsGrid.DataKeys(e.Item.ItemIndex))         ' Delete the item selected in the DataGrid from the data source.         If Not row is Nothing Then            dt.Rows.Remove(row)         End If         ' Save the data source.         Session("Source") = dt         ' Create a DataView and bind it to the DataGrid control.         Dim dv As DataView = New DataView(dt)         ItemsGrid.DataSource = dv         ItemsGrid.DataBind()      End Sub   </script></head><body>   <form id="form1" runat="server">      <h3>BaseDataList DataKeys and DataKeyField Example</h3>      <asp:DataGrid id="ItemsGrid"            BorderColor="Black"           ShowFooter="False"            CellPadding="3"            CellSpacing="0"           HeaderStyle-BackColor="#aaaadd"           DataKeyField="IntegerValue"           OnDeleteCommand="Delete_Command"           runat="server">         <Columns>            <asp:ButtonColumn Text="Delete"                 CommandName="Delete"/>         </Columns>      </asp:DataGrid>   </form></body></html>
<%@ Page Language="C#" AutoEventWireup="True" %><%@ Import Namespace="System.Data" %><%@ Import Namespace="System.Data.SqlClient" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html  ><head runat="server">    <title>BaseDataList DataKeys Example</title><script runat="server">      ICollection CreateDataSource()       {         // Create sample data for the DataGrid control.         DataTable dt = new DataTable();         DataRow dr;         // Define the columns of the table.         dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));         dt.Columns.Add(new DataColumn("StringValue", typeof(string)));         dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));         // Define the primary key for the table as the IntegerValue          // column (column 0). To do this, first create an array of          // DataColumns to represent the primary key. The primary key can         // consist of multiple columns, but in this example, only         // one column is used.         DataColumn[] keys = new DataColumn[1];         keys[0] = dt.Columns[0];         // Then assign the array to the PrimaryKey property of the DataTable.          dt.PrimaryKey = keys;         // Populate the table with sample values.         for (int i = 0; i < 9; i++)          {            dr = dt.NewRow();            dr[0] = i;            dr[1] = "Item " + i.ToString();            dr[2] = 1.23 * (i + 1);            dt.Rows.Add(dr);         }         // To persist the data source between posts to the server,          // store it in session state.           Session["Source"] = dt;         DataView dv = new DataView(dt);         return dv;      }      void Page_Load(Object sender, EventArgs e)       {         // Load sample data only once, when the page is first loaded.         if (!IsPostBack)          {            ItemsGrid.DataSource = CreateDataSource();            ItemsGrid.DataBind();         }      }      void Delete_Command(Object sender, DataGridCommandEventArgs e)      {         // Retrieve the data table from session state.         DataTable dt = (DataTable)Session["Source"];         // Retrieve the data row to delete from the data table.          // Use the DataKeys property of the DataGrid control to get          // the primary key value of the selected row.          // Search the Rows collection of the data table for this value.          DataRow row;         row = dt.Rows.Find(ItemsGrid.DataKeys[e.Item.ItemIndex]);         // Delete the item selected in the DataGrid from the data source.         if(row != null)         {            dt.Rows.Remove(row);         }         // Save the data source.         Session["Source"] = dt;         // Create a DataView and bind it to the DataGrid control.         DataView dv = new DataView(dt);         ItemsGrid.DataSource = dv;         ItemsGrid.DataBind();      }   </script></head><body>   <form id="form1" runat="server">      <h3>BaseDataList DataKeys Example</h3>      <asp:DataGrid id="ItemsGrid"            BorderColor="Black"           ShowFooter="False"            CellPadding="3"            CellSpacing="0"           HeaderStyle-BackColor="#aaaadd"           DataKeyField="IntegerValue"           OnDeleteCommand="Delete_Command"           runat="server">         <Columns>            <asp:ButtonColumn Text="Delete"                 CommandName="Delete"/>         </Columns>      </asp:DataGrid>   </form></body></html>