Home › Forums › WinForms controls › Xceed Grid for WinForms › Master/Detail/Detail2 — Detail2 Grid Data Repeating
-
AuthorPosts
-
#15551 |
I have a grid Master/ Detail (Master of) / Detail
I have got everything working with adding/ updating / deleting records to their respective tables, however my last Detail grid shows the same record for all of the First Detail Grids.
Example
Master — Vendor Number Date Qty
Detail Vendor Detail id 1
Detail 2 Vendor Response 1
Detail Vendor Detail id 2
Detail 2 Vendor Response 1
Master Vendor Number 2 Date Qty
Detail Vendor Detail id 3
Detail2 Vendor Response 1Hopefully that is more easy to understand where Detail 2 is being repeated among all of the detail records under it’s respective Master Record.
I have detail set up using the same datasource as the master grid and the relation (in this case VendorReturn.VendorReturnVRDetail as datamember
I have Detail2 set up using the same datasource as the master grid and the relation (in this case VRDetail.VRDetailVendorResponse as datamember
I am not sure why it’s not correctly separating the grids … can anyone shed some light on this?
I’ll put the actual code below:
Grid.Clear()
Grid.BeginInit() ‘ EndInit will be called later
Dim viewer As New Xceed.Grid.Viewers.ComboBoxViewer(DsVendorReturn1, “Vendors”, “VENDOR”, “%VendorNAME%”)
Dim editor As New Xceed.Grid.Editors.ComboBoxEditor(DsVendorReturn1, “Vendors”, “VENDOR”, “%VendorNAME%”)
Grid.SingleClickEdit = True
Grid.BackColor = Color.FromKnownColor(KnownColor.Control)
Grid.ScrollBars = GridScrollBars.ForcedBoth
‘==GRID SETUP=====================================================================================================
‘grid.FixedHeaderRows.Add(New GroupByRow) If TypeOf sender.CurrentCell Is Xceed.Grid.DataCell Then
Grid.FixedHeaderRows.Add(New ColumnManagerRow)
‘Grid.FixedHeaderRows.Add(New InsertionRow)
‘ grid.FixedHeaderRows.Add(New ValueRow)
‘ grid.FixedHeaderRows.Add(New ValueRow)‘ Add columns to the grid. In the case of our first column,
‘ the datatype will be button.
Grid.Columns.Add(New Column(“Closed”, GetType(Boolean)))
Grid.Columns.Add(New Column(“Edit”, GetType(System.Windows.Forms.Button)))
Grid.Columns.Add(New Column(“Credit”, GetType(Integer)))
Grid.Columns.Add(New Column(“Repaired”, GetType(Integer)))
Grid.Columns.Add(New Column(“Open”, GetType(Integer)))
Grid.Columns.Add(New Column(“Closed”, GetType(Boolean)))‘ Assign our custom row to the DataRowTemplate so that the grid will
‘ create our custom row rather than the default DataRowGrid.DataRowTemplate = New CustomDataRow
‘ Set the current column
Grid.CurrentColumn = Grid.Columns(“Sku”)
Grid.DataSource = DsVendorReturn1
Grid.DataMember = “VendorReturn”‘ Add the grid to the form
Me.Controls.Add(Grid)
Grid.Dock = DockStyle.NoneGrid.Left = 10
Grid.Top = 50
Grid.Width = Me.Width – 10
Grid.Height = 800Grid.Columns(“Edit”).Width = 50
Grid.Columns(“Edit”).VisibleIndex = 0
Grid.Columns(“RMA”).VisibleIndex = 1
Grid.Columns(“Qty”).VisibleIndex = 3
Grid.Columns(“Credit”).VisibleIndex = 4
Grid.Columns(“Repaired”).VisibleIndex = 5
Grid.Columns(“Open”).VisibleIndex = 6
Grid.Columns(“DateSent”).VisibleIndex = 7
Grid.Columns(“VendorNum”).VisibleIndex = 2Grid.Columns(“Closed”).VisibleIndex = 8
‘Set up Combo box for VendorName
Grid.Columns(“VendorNum”).CellEditorManager = editor
Grid.Columns(“VendorNum”).CellViewerManager = viewerGrid.Columns(“DateOriginated”).Visible = False
Grid.Columns(“ID”).Visible = False
Grid.Columns(“VendorNAME”).Visible = FalseDim col As Column
For Each col In Grid.Columns
col.HorizontalAlignment = HorizontalAlignment.Center
col.VerticalAlignment = VerticalAlignment.Center
Next‘ This is the detail grid that will contain the VRDetail Lines
Dim detail As New DetailGriddetail.DataSource = DsVendorReturn1
detail.DataMember = “VendorReturn.VendorReturnVRDetail”
detail.HeaderRows.Add(New ColumnManagerRow)
detail.HeaderRows.Add(New InsertionRow)
detail.HeaderRows(1).BackColor = Color.Yellowdetail.BackColor = Color.White
detail.Columns.Add(New Column(“EditLine”, GetType(System.Windows.Forms.Button)))
detail.Columns(“EditLine”).Width = 50detail.DataRowTemplate = New CustomDataRow
Grid.DetailGridTemplates.Add(detail)detail.Columns(“Comments”).Width = 300
detail.Columns(“ID”).Visible = False
detail.Columns(“VendorReturn_ID”).Visible = False
detail.Collapse()‘This is the detail grid that will contain the Vendor Response Lines for each VRDetail LIne
Dim detail2 As New DetailGrid
detail2.DataSource = DsVendorReturn1
detail2.DataMember = “VRDetail.VRDetailVendorResponse”
detail2.HeaderRows.Add(New ColumnManagerRow)
detail2.HeaderRows.Add(New InsertionRow)
detail2.BackColor = Color.Wheat
detail2.Columns.Add(New Column(“EditResponse”, GetType(System.Windows.Forms.Button)))
detail2.Columns(“EditResponse”).Width = 50
detail2.DataRowTemplate = New CustomDataRowdetail.DetailGridTemplates.Add(detail2)
detail2.Collapse()
‘ Because we called BeginInit at the beginning of the process
‘ we must call EndInit otherwise none of our modifications
‘ will be applied to the grid.
Grid.EndInit()
Imported from legacy forums. Posted by Greg (had 3481 views)
I figured out that if I set the datasource to nothing for Detail1 and Detail2 and change the datamember to VendorReturnVRDetail and VRDetailVendorResponse respectively, then the grids operate as they should.
Now the problem I get is I can’t set column widths or visibility for the columns that should be inserted from the datasource (bound columns).
At this line of code: detail.columns(“Comments”).width = 300
The error that occurs is: Object reference not set to an instnace of an objectNot sure how I would do that.
Imported from legacy forums. Posted by Greg (had 438 views)
The thing I can’t figure out is when I add the unbound column (Edit button) called EditLine it shows me that there is only one column in detail.columns.count before and after the EndInit line.
When I run the app, the detail grid has all of the columns that were in the dataset as well as the unbound column.
How can I access those bound columns?
Imported from legacy forums. Posted by Greg (had 495 views)
Figured it out finally.
Here is what I had to do.
In the Onclick override function for the cell that was created as a button (in my case “Edit”) I placed the following code in that click event
Ctype(me.parentrow, xceed.grid.datarow).detailgrids(0).columns(“Comments”).width = 300
All is better now.
Imported from legacy forums. Posted by Greg (had 4162 views)
-
AuthorPosts
- You must be logged in to reply to this topic.