Γειά σας
Σε ένα dgv έχω 3 στήλες εκ των οποίον οι 2 είναι cmb και έχουν bindingsource
Για κάθε cmb υπάρχει διαφορετικό DS
CustomersBindingSource = πρώτο cmb
ProjectsBindingSource = δεύτερο cmb
Στην πρώτη στήλη εμφανίζετε ο πελάτης και στην δεύτερη στήλη τα έργα του πελάτη. (τα έργα εισάγονται σε άλλη φόρμα όπως και ο πελάτης)
Στην πρώτη στήλη μετά την επιλογή (ComboBox_DropDownClosed) παίρνω το CustomerID και με αυτό φιλτράρω (Me.ProjectsBindingSource.Filter = ("CustomerID=" & CustID)) το άλλο DS όπου έχει τα έργα του πελάτη με αποτέλεσμα στην δεύτερη στήλη να εμφανίζονται επιτυχώς μόνο τα έργα του πελάτη που επιλέχθηκε στην πρώτη στήλη…..όλα καλά μέχρι εδώ
Τα προβλήματα που παρουσιάζονται είναι τα εξής
Εάν ο δεύτερος πελάτης που καταχωρήσω είναι διαφορετικός από τον πρώτο τότε η τιμή τις δεύτερης στήλης εξαφανίζεται ( και καλά κάνει αφού το φίλτρο εφαρμόζετε σε όλο το dgv) η τιμή στον πίνακα τις SQL όμως δεν αλλάζει (αποθηκεύω το ProjectID) εάν κλείσω την φόρμα και την ξανά ανοίξω τότε οι τιμές (όνομα έργου) εμφανίζονται κανονικά
Επίσης στην δεύτερη στήλη εμφανίζονται μόνο τα έργα του τελευταίου πελάτη..καλό το φίλτρο αλλά πώς θα γίνει να ισχύει μόνο για το current row??
Έχω δοκιμάσει κάθε πιθανό refresh, σε κατάσταση απελπισίας αντέγραψα όλα τα TA.fill που κάνει η φόρμα στο mybase.load και τα έβαλα σε btn για να το πατήσω μετά την εξαφάνιση τις τιμής αλλά τίποτα..
Καμία ιδέα???
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
Private Sub StaffExtraPaymentsDataGridView_EditingControlShowing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles StaffExtraPaymentsDataGridView.EditingControlShowing
Try
combo = CType(e.Control, ComboBox)
If (combo IsNot Nothing) Then
RemoveHandler combo.DropDownClosed, New EventHandler(AddressOf ComboBox_DropDownClosed)
AddHandler combo.DropDownClosed, New EventHandler(AddressOf ComboBox_DropDownClosed)
RemoveHandler combo.DropDown, New EventHandler(AddressOf ComboBox_DropDown)
AddHandler combo.DropDown, New EventHandler(AddressOf ComboBox_DropDown)
End If
Catch ex As InvalidCastException
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Private Sub ComboBox_DropDownClosed(ByVal sender As Object, ByVal e As EventArgs)
Try
If Me.StaffExtraPaymentsDataGridView.CurrentRow.Cells(1).IsInEditMode Then
Dim CustID As Integer = combo.SelectedValue
Me.ProjectsBindingSource.Filter = ("CustomerID=" & CustID)
End If
Catch ex As ArgumentException
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub |
I hear and I forget. I see and I remember. I do and I understand