Master-Detail grid bound to a BO


Author
Message
Andria Jensen
Andria Jensen
StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)
Group: Forum Members
Posts: 336, Visits: 497
I would like to use a master-detail grid view for my DevExpress grid, but still use a BO or a BusinessBindingSource for the DataSource.  How do I setup the Master/Detail relationship in the BO so that it works in the grid correctly?  It has to know somehow which fields to use in the master view and which in the detail.
StrataFrame Team
S
StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)
Group: StrataFrame Developers
Posts: 3K, Visits: 2.5K
I think you can use the Master-Detail grid with multiple data sources, like a parent & child.  There have been some more changes to the BusinessBindingSource so that it will support the ICurrencyManagerProvider interface better that might help you with configuring your grid.
Andria Jensen
Andria Jensen
StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)
Group: Forum Members
Posts: 336, Visits: 497
The way that they show it working is that you set some kind of ChildRelations property on the DataTable that you are setting as the DataSource for the grid.  This determines which columns are treated as master and which as detail on the DevExpress side.  I'm having some trouble finding any kind of ChildRelations collection on the BO. 
Andria Jensen
Andria Jensen
StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)
Group: Forum Members
Posts: 336, Visits: 497
I've tried this but I get an error saying Cannot create a DataRelation if Parent or Child Columns are not in a DataSet.

BusinessObject.CurrentDataTable.ChildRelations.Add("ListRelation", CalcClientBO.CurrentDataTable.Columns("ClientKey"), ClientInfoBO.CurrentDataTable.Columns("ClientKey"))

grdList.DataSource = BusinessObject.CurrentDataTable

Any ideas on anything else I can try?


StrataFrame Team
S
StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)
Group: StrataFrame Developers
Posts: 3K, Visits: 2.5K
No, I'm not sure what else you can try... you might have to create your own DataSet object and add the CurrentDataTables from the business objects you want to include in the grid.  Then, you should be able to display them in the grid, although, you will probably need to set the DataSet as the data source, not one of the business objects.
Andria Jensen
Andria Jensen
StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)StrataFrame User (416 reputation)
Group: Forum Members
Posts: 336, Visits: 497
Yep, here's what I ended up having to do to get it working:

Dim ds As New DataSet
Me.CalcClientBO.FillAll()
Me.ClientInfoBO.FillAll()

ds.Tables.Add(CalcClientBO.CurrentDataTable)
ds.Tables.Add(ClientInfoBO.CurrentDataTable)
ds.Relations.Add(
"ListRelation", ds.Tables(0).Columns("ClientKey"), ds.Tables(1).Columns("ClientKey"), False)

grdList.DataSource = ds.Tables(0)
grdList.LevelTree.Nodes.Add(
"ListRelation", gvListDtl)
grdList.RefreshDataSource()

It would be a lot easier if somehow the ParentRelationship set on the Parent/Child BO's could somehow create this relationship for you, so that you could still just set the BusinessBindingSource or the CurrentDataTable of the BO to the DataSource.

 


StrataFrame Team
S
StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)StrataFrame Developer (4.3K reputation)
Group: StrataFrame Developers
Posts: 3K, Visits: 2.5K
The problem with the BOs being able to do this automatically, is that the DataTables have to belong to a DataSet in order to define the relationships on them.
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Similar Topics

Reading This Topic

Login

Explore
Messages
Mentions
Search