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

 

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

.ΝΕΤ 2.0 Databinding και CheckedListBox

  •  13-12-2006, 18:19

    .ΝΕΤ 2.0 Databinding και CheckedListBox

    Πειραματίζομαι λίγο με το databinding και γι'αυτό σας προειδοποιώ οτι μπορει η απορία να είναι κουφή/γελοία/αστεία. Να σας αναφέρω το σενάριο:

    Εχω μια κλάση Document. Αυτή έχει διάφορα properties, ένα εκ των οποίων είναι το Sectors που ουσιαστικά είναι ένα List (of Sector) αντικειμένων.

    Θελοντας να "δεσω" αυτό το αντικείμενο με το UI μου κάνω ωραία πράγματα όπως το παρακάτω:



     Private _d As Document  'Καπου αυτό γεμίζει, δεν συμπεριλαμβάνω το σχετικό κώδικα μια και δεν αφορά την ερώτηση
        Private Sub frmDocument_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            Me.txtTitle.DataBindings.Add("text", _d, "title")
            Me.dtFrom.DataBindings.Add("value", _d, "dateup")
            Me.dtTo.DataBindings.Add("value", _d, "datedown")
            Me.txtSummary.DataBindings.Add("text", _d, "summary")
           ' ... (και άλλα τέτοια)

        End Sub

    Γεμίζοντας τώρα ένα CheckedListBox με datasource = ένα List (of Sectors) θέλω να δείξω τους Sectors για το τρέχον αντικείμενο _d τσεκάροντάς τους. Υπόψιν οτι το CheckedListBox (ας πούμε lstSectors) περιέχει ΟΛΑ τα διαθέσιμα Sector objects ενώ το _d.Sectors ΜΟΝΟ εκείνα στα οποία ανήκει το συγκεκριμένο Document instance. Και φυσικά, αν αλλάξω τις επιλογές μου, να ενημερωθεί και το _d.

    Θελω να χρησιμοποιήσω DataBindings και όχι custom code. Μπορώ να το κάνω με κάποιον τρόπο;

    ΣΗΜΕΙΩΣΗ: Για binding απλού object σε Combobox το έχω επιτύχει. Το Document class έχει άλλο ένα Property, το CallOwner, το οποίο είναι ένα Organization object. Εκεί λοιπόν αν κάνω τα εξής:

            Me.cmbCallOwner.DataSource = _objOrgMgr.Load() 'Δεν εχει σημασία πως, γεμίζει με ένα List (of Organization)
            Me.cmbCallOwner.DisplayMember = "title"
            Me.cmbCallOwner.ValueMember = "id"

    και μετά:

    Me.cmbCallOwner.DataBindings.Add("selectedvalue", _d, "callowner.id")

    Πετυχαίνω ένα 2-way databinding. Με το CheckedListBox όμως δεν μπορώ να επιτύχω το ίδιο. Βοήθεια;


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
    Δημοσίευση στην κατηγορία: ,
Δείτε όλες τις δημοσιεύσεις της Θεματική Ενότητας
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems