DataGrids and BindingContext

J

John Celmer

Can someone please help me with my code. I have a datasetX with two tables,
tableA and tableB in the datasetX. The tables have a DataRelation named
A_B_Relation. How can I get the BindingManagerBase to be a Currency Manager
so that I can get the current position when there is movement in dataGrid1.
This is my code:

// set up the binding contexts for Master/Detail grids
dataGrid1->DataSource = datasetX;
dataGrid1->DataMember = S"tableA";
dataGrid2->DataSource = datasetX;
dataGrid2->DataMember = S"A_B_Relation";
....
....
// get the current position
BindingManagerBase* manager = Form1::BindingContext->Item[datasetX,
S"tableA"];
DataRowView* view = __try_cast<DataRowView*>(manager->Current); // this
line fails with a Bad Cast exception

The above code produces a BindingManagerBase of type PropertyManager, not a
Currency Manager. How can I get a CurrencyManager that will cast to a
DataRowView of the current position? Please help.
 
G

Guest

Haven't tried it, but since your data source is datasetX, you should use

BindingManagerBase* manager = Form1::BindingContext->Item[datasetX];

instesad of

BindingManagerBase* manager = Form1::BindingContext->Item[datasetX, "tableA"];

HTH
Marcus Heege
 
J

John Celmer

Thanks. Your advice led to a resolution. And as I also later needed a
DataRowView, I changed my source from a dataset to a dataview. Thanks
again.

Marcus Heege said:
Haven't tried it, but since your data source is datasetX, you should use

BindingManagerBase* manager = Form1::BindingContext->Item[datasetX];

instesad of

BindingManagerBase* manager = Form1::BindingContext->Item[datasetX,
"tableA"];

HTH
Marcus Heege


John Celmer said:
Can someone please help me with my code. I have a datasetX with two
tables,
tableA and tableB in the datasetX. The tables have a DataRelation named
A_B_Relation. How can I get the BindingManagerBase to be a Currency
Manager
so that I can get the current position when there is movement in
dataGrid1.
This is my code:

// set up the binding contexts for Master/Detail grids
dataGrid1->DataSource = datasetX;
dataGrid1->DataMember = S"tableA";
dataGrid2->DataSource = datasetX;
dataGrid2->DataMember = S"A_B_Relation";
....
....
// get the current position
BindingManagerBase* manager = Form1::BindingContext->Item[datasetX,
S"tableA"];
DataRowView* view = __try_cast<DataRowView*>(manager->Current); // this
line fails with a Bad Cast exception

The above code produces a BindingManagerBase of type PropertyManager, not
a
Currency Manager. How can I get a CurrencyManager that will cast to a
DataRowView of the current position? Please help.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top