This is a problem I discovered but may not be caused by ES. However I post it here just in case!
Problem: Combo not keeping track with grid
Sample data: Northwind Orders and Employees using a binding source.
Grid: Orders
Combo: Employees
If I use standard MS controls with a DataSet it works as expected
Code:
Private Sub MS_LoadDataSetData()
' Use standars VS 2005 controls Only
Dim cnString As String = "Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=xxxxxx"
Dim sqlOrders As String = "SELECT OrderDate, ShipName, EmployeeID FROM Orders"
Dim sqlEmployees As String = "SELECT FirstName, LastName, EmployeeID FROM Employees"
Dim ds As New DataSet("Northwind")
Dim daOrders As New SqlDataAdapter(sqlOrders, cnString)
Dim daEmployees As New SqlDataAdapter(sqlEmployees, cnString)
daOrders.Fill(ds, "Orders")
daEmployees.Fill(ds, "Employees")
bsOrders.DataSource = ds.Tables("Orders")
bsEmployees.DataSource = ds.Tables("Employees")
With Me.DataGridView1
.DataSource = bsOrders
End With
With Me.ComboBox2
.DataSource = bsEmployees
.DisplayMember = "LastName"
.ValueMember = "EmployeeID"
.DataBindings.Clear()
.DataBindings.Add(New System.Windows.Forms.Binding("SelectedValue", bsOrders, "EmployeeID", True))
End With
End Sub
If I use Component One controls with a DataSet it works as expected
Code:
Private Sub C1_LoadDataSetData()
' Use C1 controls and if checkbox checked
' use MS ComboBox
Dim cnString As String = "Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=xxxxxx"
Dim sqlOrders As String = "SELECT OrderDate, ShipName, EmployeeID FROM Orders"
Dim sqlEmployees As String = "SELECT FirstName, LastName, EmployeeID FROM Employees"
Dim ds As New DataSet("Northwind")
Dim daOrders As New SqlDataAdapter(sqlOrders, cnString)
Dim daEmployees As New SqlDataAdapter(sqlEmployees, cnString)
daOrders.Fill(ds, "Orders")
daEmployees.Fill(ds, "Employees")
bsOrders.DataSource = ds.Tables("Orders")
With Me.C1TrueDBGrid1
.DataSource = bsOrders
.Rebind(False)
End With
bsEmployees.DataSource = ds.Tables("Employees")
With Me.C1Combo1
.DataSource = bsEmployees
.DisplayMember = "LastName"
.ValueMember = "EmployeeID"
.DataBindings.Clear()
.DataBindings.Add(New System.Windows.Forms.Binding("SelectedValue", bsOrders, "EmployeeID", True))
.AutoCompletion = True
.AutoDropDown = True
.AutoSelect = True
.MatchEntry = C1.Win.C1List.MatchEntryEnum.Extended
End With
End Sub
The problem arises if my datasource is an EntitySpaces Collection. With standard MS controls it works as expected. However if I use C1 controls the C1Combo fails to keep pace with the EmployeeID in the C1TrueDBGrid. If I then add a standard MS ComboBox to the form and bind it to the employees then the C1 ComboBox keeps track .
Code:
With Me.C1Combo1
.DataSource = bsEmployees
.DisplayMember = "LastName"
.ValueMember = "EmployeeID"
.DataBindings.Clear()
.DataBindings.Add(New System.Windows.Forms.Binding("SelectedValue", bsOrders, "EmployeeID", True))
.AutoCompletion = True
.AutoDropDown = True
.AutoSelect = True
.MatchEntry = C1.Win.C1List.MatchEntryEnum.Extended
End With
With Me.ComboBox1
.DataSource = bsEmployees
.DisplayMember = "LastName"
.ValueMember = "EmployeeID"
.DataBindings.Clear()
.DataBindings.Add(New System.Windows.Forms.Binding("SelectedValue", bsOrders, "EmployeeID", True))
End With
It seems the only way I can get the C1ComboBox to keep track of the grid is to add a standard combo in "parallel" to the C1ComboBox.