BaseDataList.DataSource Egenskap

Definition

Hämtar eller anger källan som innehåller en lista med värden som används för att fylla i objekten i kontrollen.

public:
 virtual property System::Object ^ DataSource { System::Object ^ get(); void set(System::Object ^ value); };
[System.ComponentModel.Bindable(true)]
public virtual object DataSource { get; set; }
[System.ComponentModel.Bindable(true)]
[System.Web.UI.Themeable(false)]
public virtual object DataSource { get; set; }
[<System.ComponentModel.Bindable(true)>]
member this.DataSource : obj with get, set
[<System.ComponentModel.Bindable(true)>]
[<System.Web.UI.Themeable(false)>]
member this.DataSource : obj with get, set
Public Overridable Property DataSource As Object

Egenskapsvärde

En IEnumerable eller IListSource som innehåller en samling värden som används för att tillhandahålla data till den här kontrollen. Standardvärdet är null.

Attribut

Undantag

Det går inte att matcha datakällan eftersom ett värde har angetts för både DataSource egenskapen och DataSourceID egenskapen.

Datakällan är av en ogiltig typ. Datakällan måste vara null eller implementera antingen IEnumerable gränssnittet eller IListSource .

Exempel

I följande kodexempel visas hur du använder DataSource egenskapen för att ange vilken datakälla som ska bindas till en DataGrid kontroll.

<%@ Page Language="C#" 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 xmlns="http://www.w3.org/1999/xhtml" >
   <script language="C#" runat="server">
 
      ICollection CreateDataSource() 
      {
         DataTable dt = new DataTable();
         DataRow dr;
 
         dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
         dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
         dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));
 
         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);
         }
 
         DataView dv = new DataView(dt);
         return dv;
      }
 
      void Page_Load(Object sender, EventArgs e) 
      {
 
         if (!IsPostBack) 
         {
            // Load this data only once.
            ItemsGrid.DataSource= CreateDataSource();
            ItemsGrid.DataBind();
         }
      }
 
   </script>
 
<head runat="server">
    <title>DataGrid Example</title>
</head>
<body>
 
   <form id="form1" runat="server">
 
      <h3>DataGrid Example</h3>
 
      <b>Product List</b>
 
      <asp:DataGrid id="ItemsGrid"
           BorderColor="black"
           BorderWidth="1"
           CellPadding="3"
           AutoGenerateColumns="true"
           runat="server">

         <HeaderStyle BackColor="#00aaaa">
         </HeaderStyle> 
 
      </asp:DataGrid>
 
   </form>
 
</body>
</html>
<%@ 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 xmlns="http://www.w3.org/1999/xhtml" >
   <script language="VB" runat="server">
     Function CreateDataSource() As ICollection
        Dim dt As New DataTable()
        Dim dr As DataRow
        
        dt.Columns.Add(New DataColumn("IntegerValue", GetType(Int32)))
        dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
        dt.Columns.Add(New DataColumn("CurrencyValue", GetType(Double)))
        
        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 i
        
        Dim dv As New DataView(dt)
        Return dv
    End Function 'CreateDataSource


    Sub Page_Load(sender As Object, e As EventArgs)
        
        If Not IsPostBack Then
            ' Load this data only once.
            ItemsGrid.DataSource = CreateDataSource()
            ItemsGrid.DataBind()
        End If
    End Sub 'Page_Load
 
  </script>
 
<head runat="server">
    <title>DataGrid Example</title>
</head>
<body>
 
   <form id="form1" runat="server">
 
      <h3>DataGrid Example</h3>
 
      <b>Product List</b>
 
      <asp:DataGrid id="ItemsGrid"
           BorderColor="black"
           BorderWidth="1"
           CellPadding="3"
           AutoGenerateColumns="true"
           runat="server">

         <HeaderStyle BackColor="#00aaaa">
         </HeaderStyle> 
 
      </asp:DataGrid>
 
   </form>
 
</body>
</html>

Kommentarer

Använd egenskapen DataSource för att ange källan för värden som ska bindas till en datalistningskontroll. En datakälla måste vara en samling som implementerar antingen System.Collections.IEnumerable gränssnittet (till exempel System.Data.DataView, System.Collections.ArrayListeller ) eller System.Collections.Generic.List<T>IListSource gränssnittet för att binda till en kontroll som härletts från BaseDataList klassen. När du anger egenskapen DataSource måste du skriva koden manuellt för att utföra databindningen.

Om datakällan som anges av DataSource egenskapen innehåller flera datakällor använder du DataMember egenskapen för att ange vilken källa som ska bindas till kontrollen. Om du till exempel har ett System.Data.DataSet objekt med flera tabeller måste du ange vilken tabell som ska bindas till kontrollen. När du har angett datakällan använder du DataBind metoden för att binda datakällan till kontrollen.

Alternativt kan du använda DataSourceID egenskapen för att automatiskt binda till en datakälla som representeras av en datakällakontroll. När du anger DataSourceID egenskapen binder datalistningskontrollen automatiskt till den angivna datakällans kontroll. Du behöver inte skriva kod som uttryckligen anropar DataBind metoden.

Om värden anges för både egenskapen DataSource och egenskapen DataSourceID kan ASP.NET inte matcha datakällan och ett System.Web.HttpException-undantag genereras.

Den här egenskapen kan inte anges med teman eller formatmallsteman. Mer information finns i ThemeableAttribute and ASP.NET Themes and Skins.

Gäller för

Se även