BaseDataList.DataSource Właściwość

Definicja

Pobiera lub ustawia źródło zawierające listę wartości używanych do wypełniania elementów w kontrolce.

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

Wartość właściwości

Element IEnumerable lub IListSource zawierający kolekcję wartości używanych do dostarczania danych do tej kontrolki. Wartość domyślna to null.

Atrybuty

Wyjątki

Nie można rozpoznać źródła danych, ponieważ wartość jest określona zarówno DataSource dla właściwości, jak i DataSourceID właściwości.

Źródło danych jest nieprawidłowym typem. Źródło danych musi być null lub zaimplementować IEnumerable interfejs lub IListSource .

Przykłady

W poniższym przykładzie kodu pokazano, jak za pomocą DataSource właściwości określić źródło danych powiązane z kontrolką DataGrid .

<%@ 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>

Uwagi

DataSource Użyj właściwości , aby określić źródło wartości do powiązania z kontrolką listy danych. Źródło danych musi być kolekcją, która implementuje System.Collections.IEnumerable interfejs (taki jak System.Data.DataView, System.Collections.ArrayListlub System.Collections.Generic.List<T>) lub IListSource interfejs do powiązania z kontrolką pochodzącą z BaseDataList klasy. Po ustawieniu DataSource właściwości należy ręcznie napisać kod, aby wykonać powiązanie danych.

Jeśli źródło danych określone przez DataSource właściwość zawiera wiele źródeł danych, użyj DataMember właściwości , aby określić określone źródło do powiązania z kontrolką. Jeśli na przykład masz System.Data.DataSet obiekt z wieloma tabelami, musisz określić tabelę, która ma zostać powiązana z kontrolką. Po określeniu źródła danych użyj DataBind metody , aby powiązać źródło danych z kontrolką.

Alternatywnie można użyć DataSourceID właściwości , aby automatycznie powiązać ze źródłem danych reprezentowanym przez kontrolę źródła danych. Po ustawieniu właściwości kontrolka DataSourceID listy danych automatycznie wiąże się z określoną kontrolą źródła danych. Nie musisz pisać kodu, który jawnie wywołuje metodę DataBind .

Jeśli wartości są określone zarówno DataSource dla właściwości, jak i DataSourceID właściwości, ASP.NET nie jest w stanie rozpoznać źródła danych i System.Web.HttpException zgłaszany jest wyjątek.

Nie można ustawić tej właściwości według motywów ani motywów arkusza stylów. Aby uzyskać więcej informacji, zobacz ThemeableAttributei ASP.NET Motywy i skóry.

Dotyczy

Zobacz też