Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Ένα BindingSource σε δυο Controls...

Îåêßíçóå áðü ôï ìÝëïò Τάσκος Γιώργος. Τελευταία δημοσίευση από το μέλος Τάσκος Γιώργος στις 08-02-2010, 18:35. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  07-02-2010, 21:20 56990

    Ένα BindingSource σε δυο Controls...

    Η ερώτηση μετά απο κάποιες προσπάθειες χωρίς να μπορέσω να καταφέρω αυτό που ήθελα είναι,
    Πως μπορώ να έχω δύο ComboBoxes στο οποίο θα είναι bound στο ίδιο BindingSource όπου το
    DataSource του είναι μια List<MyObject> αλλά σε διαφορετικά properties και αφού αλλάζεις επιλογή στο ένα
    αντίστοιχα να αλλάζει και το άλλο. Αυτό υπό κανονικές συνθήκες δεν θα έπρεπε να γίνεται αυτόματα? αφού
    αλλάζει το Position του BindingSource? Παρόλα αυτά δεν το είδα να γίνεται. Σε κάποια περίπτωση το κατάφερα,
    αλλά καθώς αλλάζεις το πρώτο να αλλάζει και το δεύτερο, όχι το αντίθετο.

    Ίσως να φαίνονται λίγο μπερδεμένα αλλά νομίζω πως ο καθένας θα έχει κάνει κάτι τέτοιο.
    Η αλήθεια είναι πως χρησιμοποιώ 3rd Party (DevExpress LookUpEdit) για την παρουσίαση των Data, αν και δεν νομίζω ότι
    παίζει ρόλο, αφού μιλάμε για basic Windows Forms binding.

    Λίγο κώδικας.

                MyBinding.DataSource = typeof(MyObject);
                MyBinding.DataSource = _dataObject.GetDataList(); // Φέρνει μια λίστα ..
    
                kodikosLookUp.DataBindings.Add("EditValue", MyBinding, "Kodikos", false, DataSourceUpdateMode.OnPropertyChanged);
                kodikosLookUp.Properties.DataSource = MyBinding;
                kodikosLookUp.Properties.ValueMember = "Kodikos";
                kodikosLookUp.Properties.DisplayMember = "Kodikos";
                kodikosLookUp.Properties.Columns.Clear();
                kodikosLookUp.Properties.Columns.AddRange(new []
                                                                       {
                                                                           new LookUpColumnInfo("Kodikos", "Κωδικός"),
                                                                           new LookUpColumnInfo("Perigrafi", "Περιγραφή"),
                                                                       });
    
                perigrafiLookUp.DataBindings.Add("EditValue", MyBinding, "Perigrafi", false, DataSourceUpdateMode.OnPropertyChanged);
                perigrafiLookUp.Properties.DataSource = MyBinding;
                perigrafiLookUp.Properties.ValueMember = "Perigrafi";
                perigrafiLookUp.Properties.DisplayMember = "Perigrafi";
                perigrafiLookUp.Properties.Columns.Clear();
                perigrafiLookUp.Properties.Columns.AddRange(new[]
                                                                       {
                                                                           new LookUpColumnInfo("Kodikos", "Κωδικός"),
                                                                           new LookUpColumnInfo("Perigrafi", "Περιγραφή"),
                                                                       });

    Κάτι θα κάνω λάθος ή δεν έχω καταλάβει σωστά...μπορεί κάποιος να διαφωτίσει?

    Ευχαριστώ.






  •  08-02-2010, 01:40 56996 σε απάντηση της 56990

    Απ: Ένα BindingSource σε δυο Controls...

    Δοκίμασε να αλλάξεις το ValueMember στο 2ο από Perigrafi σε  "Kodikos". Ωστε να έχουν ίδιο ValueMember και διαφορετικό DisplayMember.

                MyBinding.DataSource = typeof(MyObject);
                MyBinding.DataSource = _dataObject.GetDataList(); // Φέρνει μια λίστα ..

                kodikosLookUp.DataBindings.Add("EditValue", MyBinding, "Kodikos", false, DataSourceUpdateMode.OnPropertyChanged);
                kodikosLookUp.Properties.DataSource = MyBinding;
                kodikosLookUp.Properties.ValueMember = "Kodikos";
                kodikosLookUp.Properties.DisplayMember = "Kodikos";
                kodikosLookUp.Properties.Columns.Clear();
                kodikosLookUp.Properties.Columns.AddRange(new []
                                                                       {
                                                                           new LookUpColumnInfo("Kodikos", "Κωδικός"),
                                                                           new LookUpColumnInfo("Perigrafi", "Περιγραφή"),
                                                                       });

                perigrafiLookUp.DataBindings.Add("EditValue", MyBinding, "Perigrafi", false, DataSourceUpdateMode.OnPropertyChanged);
                perigrafiLookUp.Properties.DataSource = MyBinding;
                perigrafiLookUp.Properties.ValueMember = "Kodikos";
                perigrafiLookUp.Properties.DisplayMember = "Perigrafi";
                perigrafiLookUp.Properties.Columns.Clear();
                perigrafiLookUp.Properties.Columns.AddRange(new[]
                                                                       {
                                                                           new LookUpColumnInfo("Kodikos", "Κωδικός"),
                                                                           new LookUpColumnInfo("Perigrafi", "Περιγραφή"),
                                                                       });


    Μπλουγουράς Γιάννης
    Wizcom O.E.
  •  08-02-2010, 02:49 56997 σε απάντηση της 56996

    Απ: Ένα BindingSource σε δυο Controls...

    Το έχω δοκιμάσει, δεν παίζει, μακάρι να ήταν τόσο απλό από ότι φένεται και να μην το είχα δεί.
    Προφανώς έχει να κάνει με τα controls.





  •  08-02-2010, 12:16 57001 σε απάντηση της 56997

    Απ: Ένα BindingSource σε δυο Controls...

    αρχικα φυσικα και το display value πρεπει να ειναι κοινο και to value members διαφορετικο αλλα κοινο, αλλα με datasource objects δεν προκειτε να γινει αυτο που θες φιλε!

    δεν ειναι dataadater κtl που ετσι και αλλαζες selected index ολα που ειχαν την ακριβως ιδια datasource αλλαζανε!

    εδω αυτο που μου ερχεται προχειρα ειναι απλα καντο προγραμματιστικα!


    ενα παραδειγμα δοκιμασε το σε μενα δουλεψε. ειναι μονο για την "ενεργεια" οχι τι πρεπει να εχεις κανει bind αυτα τα εχεις κανει και οπως ειπαμε να ειναι displayvalue αλλο και valuemember allo! αλλα τελος να προσεξεις και τα fieldNames των column Που φτιαχνεις να ειναι σωστα!

    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
     
    Public Class Form1
    
        Dim selectedvalue As Integer
        Dim selectedtext As String
    
    
        Private Sub LookUpEdit1_EditValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LookUpEdit1.EditValueChanged
    
            selectedvalue = sender.EditValue
            selectedtext = sender.SelectedText
    
            Me.LookUpEdit2.EditValue = selectedvalue
            Me.LookUpEdit2.SelectedText = selectedtext
    
        End Sub
    
    
    
        Private Sub LookUpEdit2_EditValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LookUpEdit2.EditValueChanged
    
            selectedvalue = sender.EditValue
            selectedtext = sender.SelectedText
    
            Me.LookUpEdit1.EditValue = selectedvalue
            Me.LookUpEdit1.SelectedText = selectedtext
        End Sub




    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
  •  08-02-2010, 16:23 57015 σε απάντηση της 56997

    Απ: Ένα BindingSource σε δυο Controls...

    Τάσκος Γιώργος:
    Το έχω δοκιμάσει, δεν παίζει, μακάρι να ήταν τόσο απλό από ότι φένεται και να μην το είχα δεί.
    Προφανώς έχει να κάνει με τα controls.

    Ναι έχει να κάνει με το LookupEdit της DevExpress.

    Βασικά αυτό που γίνεται είναι το εξής. To Lookup της DevExpress δεν ενημερώνει το Position του BindingSource. Το αντίστοιχο Combobox της Microsoft το κάνει για αυτό και θα δεις την συμπεριφορά που θες στο Combobox της Microsoft.

    Οπότε αυτό που θες να κάνεις μπορεί να γίνει με λίγες γραμμές κώδικα.

     

  •  08-02-2010, 18:35 57025 σε απάντηση της 57015

    Απ: Ένα BindingSource σε δυο Controls...

    Ευχαριστώ, το σημειώνω σαν απάντηση επίσης γιατί είναι η εξήγηση που έψαχνα.

    @johnnyxp: Ευχαριστώ μαν ;)

    Πάντως κακώς που δεν συμβαίνει αυτό, δεν θα τους ήτανε δύσκολο να το έχουν μέσα στην λειτουργικότητα του control.



Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems