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

 

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

Combobox IsEditable=True και προβλημα στο databinding

Îåêßíçóå áðü ôï ìÝëïò tarasiadis. Τελευταία δημοσίευση από το μέλος tarasiadis στις 12-09-2009, 13:44. Υπάρχουν 15 απαντήσεις.
Σελίδα 1 από 2 (16 εγγραφές)   1 2 >
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  05-06-2009, 11:38 51376

    Combobox IsEditable=True και προβλημα στο databinding

    Έχω ένα combobox όπως παρακάτω και το έχω συνδέσει με την βάση μου με databinding και τραβάει τις τιμές του από τις τιμές ενός συγκεκριμένου table της βάσης μου.
    <ComboBox Height="23" HorizontalAlignment="Left" Margin="2" Name="ComboBoxCategory" VerticalAlignment="Top" Width="200" 
                      IsEditable="True"
                      ItemsSource="{Binding Source={StaticResource CategoryLookup}}"
                      SelectedValue="{Binding Path=category}" 
                      SelectedValuePath="category" 
                      DisplayMemberPath="category" IsSynchronizedWithCurrentItem="True" />
    Ενώ λοιπόν το έχω να είναι editable ώστε να μπορώ να προσθέτω και νέες τιμές, υπάρχει πρόβλημα. ΟΚ είναι editable, γράφω την νέα τιμή αλλά δεν μπαίνει στην βάση. Αν επιλέξω κάποιο από τα πεδία του combobox μπαίνει κανονικά.

    Πρέπει να κάνω κάτι ιδιαίτερο στο databinding επειδή είναι editable;

    Ευχαριστώ.
  •  05-06-2009, 21:55 51397 σε απάντηση της 51376

    Απ: Combobox IsEditable=True και προβλημα στο databinding


    όταν λές δεν μπαίνει? μπαίνει λάθος τιμή? μπαίνει null values?

    δώσε λίγο κώδικα να δούμε πως το σώζεις στην βάση....

    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
  •  10-06-2009, 12:08 51496 σε απάντηση της 51397

    Απ: Combobox IsEditable=True και προβλημα στο databinding

    Μπαίνει NULL ενώ όταν επιλέγω κάτι από την λίστα, μπαίνει κανονικά.

    Τι άλλο κώδικα να δώσω? Το combobox είναι όπως το περιγράφω και κάνω save Στη βάση με ProjectFormDB.SubmitChanges();

    Τι άλλο θα βοηθούσε?

    Ευχαριστώ.
  •  09-09-2009, 15:43 53585 σε απάντηση της 51496

    Απ: Combobox IsEditable=True και προβλημα στο databinding

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

    Ευχαριστώ.
  •  09-09-2009, 17:53 53587 σε απάντηση της 53585

    Απ: Combobox IsEditable=True και προβλημα στο databinding

    Food for thought: Πώς πιστεύεις ότι καταλαβαίνει το control ότι θες να προσθέσεις μια νέα τιμή και όχι να κάνεις κάτι άλλο, ας πούμε να φιλτράρεις τις τιμές που εμφανίζει; To control σου παρέχει κάποια βασική λειτουργικότητα, θα πρέπει να γράψεις κώδικα για να πετύχεις αυτό που θες, για παράδειγμα, την στιγμή που πας να περάσεις την κύρια εγγραφή στη βάση, να ελέγχεις αν η lookup τιμή του ComboBox είναι νέα και αν ναι, να κάνεις προηγουμένως Insert την τιμή στη βάση.


    Vir prudens non contra ventum mingit
  •  09-09-2009, 17:54 53588 σε απάντηση της 53585

    Απ: Combobox IsEditable=True και προβλημα στο databinding

    Κοίταξε να δεις... Θα σου απαντήσω με βάση το τι συμβαίνει στα Windows Forms και ίσως αυτό σε βοηθήσει να βρεις κάποια άκρη. Αν κατάλαβα καλά, θέλεις να γεμίζεις το combobox με τιμές από ένα πεδίο ενός πίνακα, αλλά να έχεις τη δυνατότητα να εισάγεις και νέες τιμές με το πληκτρολόγιο ή προγραμματιστικά και όταν σώζεις, αυτές οι τιμές ν' αποθηκεύονται στο αντίστοιχο πεδίο του πίνακα στόχου. Αυτό πολύ απλά στα Windows Forms ΔΕΝ γίνεται όταν στο combobox έχεις δώσει datasource. Για να εισάγεις νέες τιμές προγραμματιστικά θα πρέπει να τις εισάγεις όχι στο items collection, αλλά στο underlying datasource. Αυτά ως προς τη δεύτερη περίπτωση.

    Ως προς την πρώτη περίπτωση θα βγάλεις το binding και θα γεμίσεις "χειροκίνητα" το items collection του combo. Στη συνέχεια θα κάνεις Databindings.Add() για να "δέσεις" το πεδίο του πίνακα στόχου με το combo (δες κι εδώ). Ας υποθέσουμε ότι έχω έναν πίνακα Customers με ένα text πεδίο [CustomerName] και έναν πίνακα Sales. Στον πίνακα Sales έχω ένα text πεδίο [Customer] το οποίο θέλω να συμπληρώσω για κάθε πώληση. Ο κώδικας που πρέπει να γράψω για να γεμίσω το combobox με τις τιμές του [CustomerName] και στη συνέχεια να το "δέσω" πάνω στο πεδίο Customer του πίνακα Sales θα είναι κάπως έτσι:

    //
    // Γεμίζω το combobox items collection "χειροκίνητα" με τα ονόματα των πελατών
    // που τα "παίρνω" από τον πίνακα Customers
    //
    foreach (DataRow dr in this.CustomerDataSet.Customers)
    {
        this.cmbCustomer.Items.Add(dr["CustomerName"].ToString());
    }
    
    //
    // Ας υποθέσουμε ότι έχουμε έναν πίνακα Sales και μια στήλη του είναι και η [Customer].
    // Για να "δέσουμε" το πεδίο με το combobox ώστε να αποθηκεύει τις τιμές που εισάγουμε σ' αυτό
    // γράφουμε:
    //
    this.cmbCustomer.DataBindings.Add(new Binding("Text", this.SalesBindingSource, "Customer", true, 
    DataSourceUpdateMode.OnValidation, ""));

    Ο παραπάνω κώδικας μπορεί να έχει σφάλματα, γιατί έχω κάνει κάποιες αλλαγές και μετονομασίες από δικό μου solution και δεν τις έχω ελέγξει (όλο και κάτι θα έχει ξεφύγει στο γράψε - σβήσε). Μια φορά, με βάση το documentation θα μπορέσεις να καταλάβεις τι πάει στραβά και να το διορθώσεις. Πιστεύω τα όσα γράφω να έχουν εφαρμογή και στα WPF, εκτός αν εκεί τα πράγματα λειτουργούν ΠΟΛΥ διαφορετικά...

     


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  09-09-2009, 22:07 53592 σε απάντηση της 51376

    Απ: Combobox IsEditable=True και προβλημα στο databinding

    Προσπαθώντας να κάνω μια αντιστοίχιση με τα Windows Forms, και από τα λίγα που καταλαβαίνω μιας και δεν έχω ασχοληθεί με WPF, το ItemsSource δε θα προέρχεται από binding, αλλά τη λίστα με τις κατηγορίες θα πρέπει να τη γεμίσεις με κώδικα. Αν κάνω λάθος, όποιος ξέρει κάτι παραπάνω ας βοηθήσει...
    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  10-09-2009, 09:46 53595 σε απάντηση της 53592

    Απ: Combobox IsEditable=True και προβλημα στο databinding

    Η αλήθεια είναι πως μπερδεύτηκα λίγο...
    Βρήκα μια λύση απο το
    http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/1861be9b-9711-4182-96dd-b6591ebf1cd9/

    Απλά κάνω bind στο property Text του ComboBox και όχι στο SelectedValue.
    Λειτουργεί κανονικά από ότι φαίνεται.

    Ευχαριστώ για την όλη βοήθεια.
  •  10-09-2009, 10:17 53596 σε απάντηση της 53595

    Απ: Combobox IsEditable=True και προβλημα στο databinding

    Κι αυτό λογικό ακούγεται... Θέλω να το δοκιμάσω και σε WinForms.
    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  10-09-2009, 12:04 53598 σε απάντηση της 53596

    Απ: Combobox IsEditable=True και προβλημα στο databinding

    Λογικό, όσο αποθηκεύεις στον κύριο πίνακα text. Τυπικά όμως στα lookup πεδία δείχνουμε στη φόρμα text (το human representation) αλλά αποθηκεύουμε στον πίνακα το reference id της αντίστοιχης εγγραφής, σε αυτήν την περίπτωση δεν μπορώ να φανταστώ πώς μπορεί να πετύχει κάτι τέτοιο μιας και το κείμενο που έχει γράψει ο χρήστης δεν υπάρχει ως εγγραφή. Τώρα, αν μιλάμε για αποθήκευση text, τότε οφείλω να πω ότι το αρχικό μήνυμα ήταν κομματάκι ασαφές...


    Vir prudens non contra ventum mingit
  •  10-09-2009, 12:52 53600 σε απάντηση της 53598

    Απ: Combobox IsEditable=True και προβλημα στο databinding

    Είναι θέμα business logic. Υπάρχουν περιπτώσεις που δε μπορείς να κάνεις διαφορετικά από το να εισάγεις μια τιμή σε ένα πεδίο ενός πίνακα χωρίς να υπάρχει αντίστοιχη εγγραφή στο "parent" table. Βέβαια, μπορώ να μιλήσω μόνο για το δικό μου αντικείμενο (ζωοτεχνία). Για παράδειγμα, έχω ένα πίνακα επιβάσεων για τα θηλυκά. Τα θηλυκά, όπως και τα αρσενικά, καταχωρούνται σε δικό τους πίνακα. Υπάρχει, όμως, περίπτωση η γονιμοποίηση να γίνει με σπέρμα το οποίο ανήκει σε αρσενικό εκτός εκμετάλλευσης, με τεχνητή σπερματέγχυση. Σ' αυτή την περίπτωση δε μπορείς να ανοίξεις καρτέλα αρσενικού και να δηλώσεις ένα επιπλέον ζώο στον πληθυσμό. Δε μπορείς, όμως, να μη δηλώσεις αρσενικό στο πεδίο της επίβασης. Υποχρεωτικά συμπληρώνεις τον κωδικό της αγορασμένης δόσης με το "χέρι" και πρέπει η αποθήκευση να πετύχει. Στην περίπτωση δε των αγελάδων γαλακτοπαραγωγής, η μονάδα μπορεί να μη διαθέτει καν ταύρους και απλά να προμηθεύεται σπέρμα. Το μπάχαλο γίνεται όταν οι επιβάσεις είναι διπλές, οπότε έχεις δύο πεδία για το αρσενικό. Σ΄αυτή την περίπτωση, αν το αρσενικό είναι το ίδιο και στην πρώτη και στην επαναληπτική, δε μπορείς να είσαι σίγουρος ότι θα δηλωθεί και στα δύο πεδία. Μπορεί ο παραγωγός να το δηλώσει μόνο μία φορά, σ' όποιο πεδίο του καπνίσει. Δε μου έχει τύχει τέτοιος χρήστης, αλλά σαν ενδεχόμενο είναι πιθανό. Άντε τώρα βγάλε εσύ γενεαλογικό δέντρο και κάνε εκτίμηση αποδόσεων για τον πατέρα...


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  10-09-2009, 13:23 53602 σε απάντηση της 53600

    Απ: Combobox IsEditable=True και προβλημα στο databinding

    Χα χα χα, περίπλοκο business logic! Πλάκα, πλάκα, οι εφαρμογές γενεαλογικών δεδομένων δεν είναι εύκολο πράγμα.

     


    Vir prudens non contra ventum mingit
  •  10-09-2009, 13:31 53604 σε απάντηση της 53602

    Απ: Combobox IsEditable=True και προβλημα στο databinding

    KelMan:

    Χα χα χα, περίπλοκο business logic! Πλάκα, πλάκα, οι εφαρμογές γενεαλογικών δεδομένων δεν είναι εύκολο πράγμα.

    Έλα λίγο στη θέση μου... Εγώ δε γελάω καθόλουCrying.

    Υ.Γ.: Μάλλον πρέπει να ζητήσω συγγνώμη από το μέλος για την τροπή που έδωσα στη συζήτηση.


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  10-09-2009, 13:41 53605 σε απάντηση της 53604

    Απ: Combobox IsEditable=True και προβλημα στο databinding

    Δε νομίζω να υπάρχει θέμα, εφόσον λύθηκε το αρχικό πρόβλημα.

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


    Vir prudens non contra ventum mingit
  •  10-09-2009, 13:54 53606 σε απάντηση της 53605

    Απ: Combobox IsEditable=True και προβλημα στο databinding

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


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
Σελίδα 1 από 2 (16 εγγραφές)   1 2 >
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems