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

 

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

Πως περνάμε σε ένα Listbox ένα δικό μας value και ένα δικό μας κείμενο για να φαίνεται στον χρήστη ανά επιλογή;

Îåêßíçóå áðü ôï ìÝëïò dtakis. Τελευταία δημοσίευση από το μέλος Mitsaras στις 09-02-2007, 14:07. Υπάρχουν 9 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  08-02-2007, 15:49 24685

    Πως περνάμε σε ένα Listbox ένα δικό μας value και ένα δικό μας κείμενο για να φαίνεται στον χρήστη ανά επιλογή;

    Έχω ένα Listbox π.χ. listbox1 σε C#

    και θέλω ανάλογα με ένα select μενού να του περάσω δικό μου value και κείμενο να εμφανίζει σε κάθε επιλογή.

    Π.χ.
    value - κείμενο που θα δείχνει στο select
    1 - Δημήτρης Γεωργίου 2103212345
    14 - Κωσταντίνος Ανδρέου 21032111111
    35 - Γεώργιος Αντωνίου 2103222222

    Στο κείμενο που εμφανίζεται έξω θέλω δλδ να περάσω 1 ή περισσότερα δικά μου text.

    Ευχαριστώ εκ των προτέρων
    Δημοσίευση στην κατηγορία: ,
  •  08-02-2007, 16:54 24687 σε απάντηση της 24685

    Απ: Πως περνάμε σε ένα Listbox ένα δικό μας value και ένα δικό μας κείμενο για να φαίνεται στον χρήστη ανά επιλογή;

    Ένας απλός τρόπος να το κάνεις αυτός είναι ο εξής:
    Κανεις ένα stuct ή ενα class ανάλογα τις απαιτήσεις σου και κανεις override την ToString().
    struct myListItem
    {
        public string sValue;
        public string sText;

        public override string ToString()
        {
            //return base.ToString();
            return string.Concat(sValue, " - ", sName);
        }
    }


    Οπότε τώρα τα listitems σου τα κάνεις τύπου myListItem και όταν τα κάνεις add στο ListBox το κείμενο που θα εμφανίζεται θα είναι αυτό που θα ορίσεις εσύ στην υλοποίηση της ToString().
  •  08-02-2007, 17:04 24688 σε απάντηση της 24687

    Απ: Πως περνάμε σε ένα Listbox ένα δικό μας value και ένα δικό μας κείμενο για να φαίνεται στον χρήστη ανά επιλογή;

    Μπορείς να δημιουργήσεις ένα get property στα αντικείμενα που θα εμφανίζονται μέσα στο listbox, έστω FullName, το οποίο θα επιστρέφει το κείμενο που θέλεις, και να αλλάξεις την τιμή του DisplayMember property στο listbox, σε FullName.

    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  08-02-2007, 17:57 24689 σε απάντηση της 24685

    Απ: Πως περνάμε σε ένα Listbox ένα δικό μας value και ένα δικό μας κείμενο για να φαίνεται στον χρήστη ανά επιλογή;

    Μάλλον δεν κατάλαβατε τι εννοώ! Θέλω αν μετά ζητήσω listbox1.SelectedIndex να επιστρέψει 14 για τον Κωνσταντίνο Ανδρέου και αν ζητήσω listbox1.SelectedItem να επιστρέψει Κωσταντίνος Ανδρέου 21032111111.

    Βασικά με ενδιαφέρει να παίρνω έτσι το ID της εγγραφής για να το κάνω μετά UPDATE!
  •  08-02-2007, 18:35 24692 σε απάντηση της 24689

    Απ: Πως περνάμε σε ένα Listbox ένα δικό μας value και ένα δικό μας κείμενο για να φαίνεται στον χρήστη ανά επιλογή;

    Το index του Listbox απ' όσο ξέρω, δε μπορείς να το επηρρεάσεις εύκολα. Είναι προτιμότερο να περάσεις κάποιο αντικείμενο όπως αυτό που σου προτείνει ο NullOK. Πιο αναλυτικά:

    1) Φτιάχνεις ένα struct σαν το παρακάτω:
    public struct AnItem
    {
      /// <summary>
      /// Item's value
      /// </summary>
      public int Value
      {
        get { return this._value; }
        set { this._value = value; }
      }
      private int _value;


      /// <summary>
      /// Item's title
      /// </summary>
      public string Title
      {
        get { return this._title; }
        set { this._title = value; }
      }
      private string _title;


      public AnItem(int value, string title)
      {
        this._value = value;
        this._title = title;
      }
    }

    2) Προσθέτεις αντικείμενα του παραπάνω τύπου στο Listbox (και όχι απλά strings όπως υποθέτω πως εννοείς)
    3) Αλλάζεις τα DisplayMember και ValueMember properties του Listbox, σε Value και Title αντίστοιχα (προσοχή, τα Value & Title πρέπει να είναι properties, και όχι απλά fields!).
    3) Μετά, μπορείς να πάρεις τις παραπάνω τιμές, με τα εξής properties του Listbox:
        a) Το .SelectedValue property σου επιστρέφει το Value ενός AnItem που είναι επιλεγμένο εκείνη τη στιγμή.
        b) Το .SelectedItem σου επιστρέφει το ίδιο το AnItem που είναι επιλεγμένο εκείνη τη στιγμή.

    Οπότε για να πάρεις τον αριθμό/value/index του επιλεγμένου αντικειμένου εκείνη τη στιγμή, αρκεί να γράψεις: Convert.ToInt32(listBox.SelectedValue), και για να πάρεις το κείμενο, ((AnItem) listBox.SelectedItem).Title


    Ελπίζω να σε βοήθησε.

    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  08-02-2007, 18:40 24693 σε απάντηση της 24689

    Απ: Πως περνάμε σε ένα Listbox ένα δικό μας value και ένα δικό μας κείμενο για να φαίνεται στον χρήστη ανά επιλογή;

    Κοίτα, αν κατάλαβα καλά, θές να πειράξεις το .SelectedIndex του ListBox να σου δείχνει το value της εγγραφής; Γιατί αν είναι έτσι τότε δεν γίνεται κάτι τέτοιο (απ'όσο ξέρω τουλάχιστον).

    Αν πάλι θές πρώτα να πάρεις το Value, και μετά να πάρεις και το text με τον τρόπο που σου είπα γίνεται. Απλά πρώτα πρέπει να κάνεις casting, δηλ:
     if( ((myListItem)listbox1.SelectedItem).sValue == "14" )
    {
        string szSelectedText = ((myListItem)listbox1.SelectedItem).sText;
        // Αλλιώς μπορείς να πείς
        szSelectedText = listbox1.SelectedItem.ToString();
    }



    εννοείτε πως σαν value στην προκειμένη περίπτωση θα μπορούσες να είχες χρησιμοποιήσει είτε κάποιο int είτε οποιοδήποτε type θες. Αλλα για το selectedindex δεν μπορείς να παρέμβεις γιατι δείχνει τη θέση του κάθε item στη λίστα.
  •  09-02-2007, 13:17 24730 σε απάντηση της 24693

    Απ: Πως περνάμε σε ένα Listbox ένα δικό μας value και ένα δικό μας κείμενο για να φαίνεται στον χρήστη ανά επιλογή;

    Κατάλαβα ότι δεν μπορούμε να παίζουμε με το SelectedIndex αλλά στην ουσία χρειαζόμαστε άλλο να δείχνουμε στην προβολή του Listbox και άλλο να τραβάμε αν επιλεχθεί.

    Από την εμπειρία σας πως π.χ. θα φτιάχνατε μια λίστα με ονόματα ώστε επιλέγοντας ένα από αυτά να ξέρατε ποιανού τα αναλυτικά στοιχεία θα προβάλατε από τη βάση;
  •  09-02-2007, 13:37 24738 σε απάντηση της 24730

    Απ: Πως περνάμε σε ένα Listbox ένα δικό μας value και ένα δικό μας κείμενο για να φαίνεται στον χρήστη ανά επιλογή;

    Απο ότι καταλαβαίνω, θές σε κάθε listitem ένα "κρυφό" value που θα δείχνει το id του χρήστη/πελάτη/οτιδήποτε και σαν εμφανές μέρος θές να σου δείχνει κάποια άλλα πιο αναλυτικά στοιχεία σωστά;
    Και πάλι θα σου προτείνω αυτό που είπα εξ΄αρχής. Θα φτιάξεις δηλαδή ένα struct σαν αυτό:
    public struct myListItem
    {
        public int UserID;
        public string FullName;
        public string PhoneNumber;

        public override string ToString()
        {
            return string.Concat(FullName, " ",
    PhoneNumber);
        }
    }

    Όλα σου τα items θα είναι τύπου myListItem, οπότε κάθε φορά με ένα απλό cast θα μπορείς να πάρεις όποιο στοιχείο του item χρειάζεσαι.

    Θα λές δηλαδη
    int iSelectedUserID = ((myListItem)listbox1.SelectedItem).UserID;

    string SelectedName = ((myListItem)listbox1.SelectedItem).FullName;

    string SelectedPhone = ((myListItem)listbox1.SelectedItem).PhoneNumber;


    και οι τιμές που θα έχει πάρει θα είναι π.χ.  14, "Κωνσταντίνος Ανδρέου", "21032111111"

    Αλλα αφού απο ότι καταλαβαίνω αυτο που χρειάζεσαι ουσιαστικά εσύ, είναι να έχεις για κάθε εγγραφή το συγκεκριμένο id, τότε η λύση αυτή και σε καλύπτει, και είναι και απλή πιστεύω.
  •  09-02-2007, 13:54 24744 σε απάντηση της 24738

    Απ: Πως περνάμε σε ένα Listbox ένα δικό μας value και ένα δικό μας κείμενο για να φαίνεται στον χρήστη ανά επιλογή;

    Συμφωνώ και εγώ με αυτή την προσέγγιση. Την ακολουθώ συχνά, απλά αντί για struct χρησιμοποιώ συνήθως ένα μικρό private class.

     


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

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  09-02-2007, 14:07 24747 σε απάντηση της 24744

    Απ: Πως περνάμε σε ένα Listbox ένα δικό μας value και ένα δικό μας κείμενο για να φαίνεται στον χρήστη ανά επιλογή;

    Αν δεν απατώμαι, το class θα σε γλυτώσει από το overhead του boxing/unboxing. Επίσης θα σου επιτρέψει να πεις πχ
        ((MyListItem)listbox1.SelectedItem).PhoneNumber = "tade";
    ή (ακόμα πιο ευανάγνωστα)
        (listbox1.SelectedItem as MyListItem).PhoneNumber = "tade";


    (επίσης, θα χρησιμοποιούσα properties αντί για γυμνά fields)

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