次の方法で共有


BaseDataList.DataSource プロパティ

定義

コントロール内に項目を設定するために使用する値のリストを格納しているソースを取得または設定します。

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

プロパティ値

このコントロールにデータを提供するために使用する値のコレクションを格納している IEnumerable または IListSource。 既定値は null です。

属性

例外

DataSource プロパティと DataSourceID プロパティの両方に値が指定されているため、データ ソースを解決できません。

データ ソースの型が無効です。 データ ソースは、null にするか、IEnumerable または IListSource インターフェイスを実装する必要があります。

次のコード例では、 プロパティを使用 DataSource して、コントロールにバインドするデータ ソースを指定する方法を 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>

注釈

プロパティを DataSource 使用して、データ リスト コントロールにバインドする値のソースを指定します。 データ ソースは、 クラスからBaseDataList派生したコントロールにSystem.Collections.IEnumerableバインドするインターフェイス (、System.Collections.ArrayList、または などSystem.Data.DataView) またはSystem.Collections.Generic.List<T>IListSourceインターフェイスを実装するコレクションである必要があります。 プロパティを設定するときは、データ バインディングを DataSource 実行するコードを手動で記述する必要があります。

プロパティで指定されたデータ ソースに DataSource 複数のデータ ソースが含まれている場合は、 プロパティを DataMember 使用して、コントロールにバインドする特定のソースを指定します。 たとえば、複数のテーブルを System.Data.DataSet 持つオブジェクトがある場合は、コントロールにバインドするテーブルを指定する必要があります。 データ ソースを指定したら、 メソッドを DataBind 使用してデータ ソースをコントロールにバインドします。

または、 プロパティを DataSourceID 使用して、データ ソース コントロールによって表されるデータ ソースに自動的にバインドすることもできます。 プロパティを DataSourceID 設定すると、データ リスト コントロールは、指定したデータ ソース コントロールに自動的にバインドされます。 メソッドを明示的に呼び出すコードを記述する DataBind 必要はありません。

プロパティと DataSourceID プロパティの両方に値がDataSource指定されている場合、ASP.NET はデータ ソースを解決できず、System.Web.HttpException例外がスローされます。

このプロパティは、テーマまたはスタイル シート テーマによって設定することはできません。 詳細については、「テーマとスキンの ASP.NET」を参照してくださいThemeableAttribute

適用対象

こちらもご覧ください