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

 

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

Απ: Double, Decimal & Currency

Îåêßíçóå áðü ôï ìÝëïò PanPan. Τελευταία δημοσίευση από το μέλος Νατάσα Μανουσοπούλου στις 13-04-2007, 19:06. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  11-04-2007, 12:27 28530

    Απ: Double, Decimal & Currency

    Έχω ορίσει πάνω στην φόρμα μου (δουλεύω με VB2005) να εμφανίζονται τα πεδία τύπου decimals με τα δεκαδικά που επιθυμώ να φαίνονται και όχι όσα έχουν πάνω στην βάση του SQL (2000). Το θέμα είναι ότι όταν χρησιμοποιώ τα navigate buttons (BindingNavigatorMoveNext, etc, etc), τότε αυτά τα πεδία εμφανίζονται (στα textboxes τους) με την μορφή που έχουν στην βάση του SQL και όχι με το format που έχω ορίσει εγώ. Σε αυτήν την περίπτωση, πώς επιτυγχάνουμε να εμφανίζονται τα αριθμητικά πεδία με το επιθυμητό αριθμό δεκαδικών για τον χρήστη;; (Δοκίμασα να περάσω το format στο click event του BindingNavigatorMoveNextItem, etc, αλλά αποδείχθηκε άτοπο. Κάπως θα πρέπει να επηρεάζω τα δεδομένα που έχουν φορτωθεί στο dataset....)


    "Μη σταματάς να αναζητάς αυτό που αγαπάς, ειδάλλως θα καταλήξεις να αγαπάς ό,τι βρίσκεις." (Αγνώστου)
  •  11-04-2007, 12:41 28534 σε απάντηση της 28530

    Απ: Double, Decimal & Currency

    Μετακίνησα την ερώτηση σου στο WebForms forum, επειδή το πρόβλημα αφορά τον προγραμματισμό σε ASP.NET και όχι τις βάσεις δεδομένων. Επιπλέον, βάζοντας την ερώτηση σου σε ένα thread το οποίο έχει κλείσει εδώ και καιρό, μειώνονται οι πιθανότητες να πάρεις απάντηση. Είναι πολύ πιθανότερα να πάρεις μία απάντηση αν βάλεις μία νέα ερώτηση παρά αν την κολλήσεις σε ένα κλειστό thread.

    Όσον αφορά την ερώτηση σου, πως διαβάζεις τα νούμερα από τη βάση? Ως string ή decimal? Και πως μετατρέπεις το decimal σε string? Αν χρησιμοποιείς την ToString ή την String.Format, δεν υπάρχει περίπτωση να εμφανιστεί αυτό που περιγράφεις. Μήπως συμβαίνει κάτι άλλο? Μήπως για παράδειγμα, διαβάζεις τα δεδομένα ως string και τα περνάς στα textboxes χωρίς να φορμάρεις το νούμερο?


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  12-04-2007, 09:58 28732 σε απάντηση της 28534

    Απ: Double, Decimal & Currency

    Παναγιώτη, ευχαριστώ για την συμβουλή σου να βάζω τις ερωτήσεις μου σε νέα θέματα. Μόνο που ασχολούμαι με winforms και όχι με webforms & asp.net. Είπα ότι γράφω σε VB2005 και ενώ έχω την τεχνογνωσία για SQL2005, στην δουλειά ακόμη έχουμε τον SQL2000.

    Ως decimal διαβάζω τα νούμερα από την βάση και έτσι είναι και πάνω στο dataset. Το θέμα μου είναι να μπορέσω να διατηρήσω το format που θέλω να εμφανίζεται στον χρήστη και όχι με όλα αυτά τα trailing zeros που έχει το πεδίο στην βάση. Χρησιμοποιώ την format στα δεδομένα μου που εμφανίζονται πάνω στο textbox (τα οποία είναι τύπου decimal), αλλά όταν μετακινούμαι σε επόμενες/προηγούμενες εγγραφές, η μορφοποίηση που έχω δώσει δεν διατηρείται και δεν ξέρω πώς αλλιώς να το επιτύχω αυτό. Εξ' ου και η ερώτησή μου.


    "Μη σταματάς να αναζητάς αυτό που αγαπάς, ειδάλλως θα καταλήξεις να αγαπάς ό,τι βρίσκεις." (Αγνώστου)
  •  12-04-2007, 10:16 28734 σε απάντηση της 28732

    Απ: Double, Decimal & Currency

    To Binding object, που συνδέει το textbox σου με το πεδίο του data source, έχει τα events Format και Parse. Αυτά μπορείς να τα χρησιμοποιήσεις για να επέμβεις στον τρόπο που "μεταφράζονται" οι αριθμοί σου σε strings και το αντίστροφο.

    Νατάσα Μανουσοπούλου
  •  12-04-2007, 10:24 28735 σε απάντηση της 28734

    Απ: Double, Decimal & Currency

    Ευχαριστώ Νατάσα.

    Τις μεθόδους θέλεις να πεις, από τις οποίες ήδη έχω χρησιμοποιήσει την format και έβλεπα εχθές κάτι σχετικό με την Parse στο Help, αλλά δεν βλέπω να παίζει όταν μετακινούμαι στις εγγραφές. Καμιά ιδέα επί τούτου;


    "Μη σταματάς να αναζητάς αυτό που αγαπάς, ειδάλλως θα καταλήξεις να αγαπάς ό,τι βρίσκεις." (Αγνώστου)
  •  13-04-2007, 19:06 28976 σε απάντηση της 28735

    Απ: Double, Decimal & Currency

    Τα events για τα οποία έγραψα μπορείς να τα βρεις στο http://msdn2.microsoft.com/en-us/library/system.windows.forms.binding_events.aspx.
    Κοντολογίς, για να γίνει η σύνδεση μεταξύ control και πεδίου, και να γίνει αριθμητικό formatting, o κώδικας που γεννά o designer πρέπει να περιέχει κάτι τέτοιο:

    textBox1.DataBindings.Add(new Binding("Text", dataSource, "Amount", true, DataSourceUpdateMode.OnPropertyChanged, "C2");

    To "C2" δηλώνει αξιακή μορφοποίηση με δύο δεκαδικά (θα περιέχεται και το σύμβολο του νομίσματος). Με αυτό, θα πρέπει να βλέπεις πάντα το περιεχόμενο του text box σωστά φορμαρισμένο. Αν θέλεις να παίξεις με το Format event, τότε θα κάνεις κάτι τέτοιο:

    Binding b = new Binding("Text", dataSource, "Amount");
    b.Format += new delegate(object sender, ConvertEventArgs e)
        {
           if (e.DesiredType == typeof(string) && e.Value is decimal)
           {
              e.Value = ((decimal)e.Value).ToString("C2");
           }
        };
    textBox1.DataBindings.Add(b);

    Θα μου συγχωρέσεις τη C# και τυχόν λάθη γιατί γράφω από μνήμης.

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