BindingContext.Item プロパティ (Object, String)
指定したデータ ソースおよびデータ メンバに関連付けられた BindingManagerBase を取得します。
[C#] C# では、このプロパティは BindingContext クラスのインデクサになります。
Overloads Public Default ReadOnly Property Item( _
ByVal dataSource As Object, _ ByVal dataMember As String _) As BindingManagerBase
[C#]
public BindingManagerBase this[objectdataSource,stringdataMember] {get;}
[C++]
public: __property BindingManagerBase* get_Item(Object* dataSource,String* dataMember);
[JScript]
returnValue = BindingContextObject.Item(dataSource, dataMember);またはreturnValue = BindingContextObject(dataSource, dataMember);
[JScript] JScript では、この型で定義されている既定のインデックス プロパティを使用することができます。しかし、独自のインデックス プロパティを明示的に定義することはできません。ただし、このクラスの expando 属性を指定すると、既定のインデックス プロパティが提供されます。提供されるインデックス プロパティの型は Object 型であり、インデックス型は String になります。
引数 [JScript]
- dataSource
特定の BindingManagerBase に関連付けられたデータ ソース。 - dataMember
特定の BindingManagerBase に解決される情報を保持するナビゲーション パス。
パラメータ [Visual Basic, C#, C++]
- dataSource
特定の BindingManagerBase に関連付けられたデータ ソース。 - dataMember
特定の BindingManagerBase に解決される情報を保持するナビゲーション パス。
プロパティ値
指定したデータ ソースおよびデータ メンバの BindingManagerBase 。
例外
例外の種類 | 条件 |
---|---|
Exception | 指定した dataMember に対して子リストを作成できません。 |
解説
データ ソースに複数のオブジェクトが格納されている Binding オブジェクトのセットを BindingManagerBase が管理する場合は、このオーバーロードを使用します。たとえば、 DataSet には、 DataRelation オブジェクトによってリンクされた複数の DataTable オブジェクトを格納できます。このような場合、 BindingContext で正しい BindingManagerBase を返すためにはナビゲーション パスが必要です。
メモ Item プロパティは、常に BindingManagerBase を返し、 null 参照 (Visual Basic では Nothing) を返すことはありません。
使用できるデータ ソースの一覧と、コントロールとデータ ソースの間のバインディング作成の詳細については、 Binding クラスのトピックを参照してください。
目的の BindingManagerBase によってリストを管理する場合は、ナビゲーション パスにリストの終端も指定する必要があります。たとえば、次の C# コードは、 TextBox コントロールを発注表の発注日付にバインドします。ナビゲーション パスは、 TableName 、 RelationName 、および ColumnName で構成されます。ただし、 TableName とリストに解決される RelationName だけを使用して BindingManagerBase を取得する必要があります。
// The navigation path for a Binding ends with a property.
textBox1.DataBindings.Add
("Text", dataSet1, "Customers.custToOrders.OrderDate");
// The navigation path for the BindingManagerBase ends with a list.
BindingManagerBase bmOrders = this.BindingContext
[dataSet1, "Customers.custToOrders"];
BindingManagerBase が返されると、 Binding と同じデータ ソースを使用して、ナビゲーション パスだけを変更する必要があります。目的の BindingManagerBase が既に存在するかどうかを確認するには、 Contains メソッドを使用します。
使用例
[Visual Basic, JScript] BindingContext を使用して BindingManagerBase オブジェクトを返す例を次に示します。このオブジェクトは、複数のオブジェクトを格納しているデータ ソースにバインドされた Binding オブジェクトを管理しています。いずれの場合も、指定したデータ メンバが使用されて、正しいオブジェクトに解決されます。
' The following lines go into the Declarations section of the form.
Private cmOrders As BindingManagerBase
Private cmProducts As BindingManagerBase
Private dsOrders As DataSet
Private dsProducts As DataSet
Private Combo1 As ComboBox
Private Combo2 As ComboBox
Private DataGrid1 As DataGrid
Private DataGrid2 As DataGrid
Private myBindingManagerBase As BindingManagerBase
Shared Sub Main()
End Sub
' Not shown: code to create and populate DataSets with tables.
' The code assumes the dsOrders has two tables, Orders and OrderDetails,
' and dsProducts has two tables, Suppliers and Products.
Private Sub BindControls()
' Bind four controls to two data sources:
' two DataGrid controls and two ComboBoxes.
Combo1.DataBindings.Add("Text", dsProducts.Tables("Suppliers"), "CompanyName")
DataGrid1.DataSource = dsProducts
DataGrid1.DataMember = "Products"
Combo2.DataBindings.Add("Text", dsOrders.Tables("Orders"), "Customer")
DataGrid2.SetDataBinding(dsOrders, "OrderDetails")
End Sub
Private Sub GetBindingManagerBases()
' Get the BindingManagerBase objects for each data source.
cmOrders = me.BindingContext(dsOrders, "Orders")
cmProducts = me.BindingContext(dsProducts, "Products")
End Sub
Private Sub GetBindingManagerBase()
' Set the BindingManagerBase for the bound control using the BindingContext
' of the Win Form. Pass the same table to the BindingContext as the bound control.
myBindingManagerBase = Me.BindingContext(dsProducts.Tables("Suppliers"))
End Sub
[JScript]
//The following lines go into the Declarations section of the form.
private var cmOrders : BindingManagerBase;
private var cmProducts : BindingManagerBase;
private var dsOrders : DataSet;
private var dsProducts : DataSet;
private var Combo1 : ComboBox;
private var Combo2 : ComboBox;
private var DataGrid1 : DataGrid;
private var DataGrid2 : DataGrid;
private var myBindingManagerBase : BindingManagerBase;
static function Main()
{
}
// Not shown: code to create and populate DataSets with tables.
// The code assumes the dsOrders has two tables, Orders and OrderDetails,
// and dsProducts has two tables, Suppliers and Products.
private function BindControls()
{
// Bind four controls to two data sources:
// two DataGrid controls and two ComboBoxes.
Combo1.DataBindings.Add("Text", dsProducts.Tables("Suppliers"), "CompanyName");
DataGrid1.DataSource = dsProducts;
DataGrid1.DataMember = "Products";
Combo2.DataBindings.Add("Text", dsOrders.Tables("Orders"), "Customer");
DataGrid2.SetDataBinding(dsOrders, "OrderDetails");
}
private function GetBindingManagerBases()
{
// Get the BindingManagerBase objects for each data source.
cmOrders = BindingContext(dsOrders, "Orders");
cmProducts = BindingContext(dsProducts, "Products");
}
private function GetBindingManagerBase()
{
// Set the BindingManagerBase for the bound control using the BindingContext
// of the Win Form. Pass the same table to the BindingContext as the bound control.
myBindingManagerBase = BindingContext(dsProducts.Tables("Suppliers"));
}
[C#, C++] C# および C++ のサンプルはありません。Visual Basic および JScript のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
BindingContext クラス | BindingContext メンバ | System.Windows.Forms 名前空間 | BindingContext.Item オーバーロードの一覧 | BindingsCollection | Binding