Groups | Blog | Home
all groups > visual c > may 2005 >

visual c : DataGrids and BindingContext


John Celmer
5/6/2005 11:33:08 PM
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.


Marcus Heege
5/7/2005 8:06:04 AM
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


[quoted text, click to view]
John Celmer
5/8/2005 6:11:10 AM
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.

[quoted text, click to view]

AddThis Social Bookmark Button