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

 

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

DataBind σε Εικονικό Database Column

Îåêßíçóå áðü ôï ìÝëïò IXC. Τελευταία δημοσίευση από το μέλος IXC στις 09-11-2007, 11:00. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  02-11-2007, 11:16 36885

    DataBind σε Εικονικό Database Column

    Εχω ένα πίνακα με τα εξής πεδία :

    CategoryID
    ProductID
    Price
    .....
    Status  κ.λ.π

    και εμφανίζω τις εγγραφές του σε ενα DatagridView
    Για να εμφανίζονται οι Ονομασίες των κατηγοριών και των προϊόντων αντί για τα Id's έχω προσθέσει sub querys όπως

    1
    2
    3
     SELECT id, SupplierID, InvoiceID, CategoryID,
    (SELECT Description FROM Categories WHERE (CategoryID = Warehouse.CategoryID)) AS CategoryDescription, ProductID,
    (SELECT Description FROM Products WHERE (ProductID = Warehouse.ProductID)) AS ProductDescription, Price FROM Warehouse

    και το αποτέλεσμα ειναι έτσι

    Κατηγορία           Προιόν                         Τιμη
    -------------------------------------------------------
    Παπούτσια          γόβες                           90€
    Γυαλικά              φλυτζάνια                     56€


    Οταν ο χρήστης επιλέξει ενα row τότε οι τιμές εμφανίζονται σε αντίστοιχα controls που ειναι bind και όταν κάνει αλλαγές και επιλέξει άλλο row στο DatagridView οι αλλαγές φαίνονται στο row.
    Το πρόβλημα είναι οτι τα πεδία CategoryDescription & ProductDescription δε φαίνονται μεσα στο DataSet μιας και είναι Expressions με αποτέλεσμα να μην μπορώ να τα κάνω Βind.
    Αν κάνω Bind τα CategoryID & ProductID αντίστοιχα και ο χρήστης κάνει αλλαγές τότε στο DataGridview δεν φαίνονται
    Τι τρόπος υπάρχει να υλοποιηθεί κάτι τέτοιο ;

     

     

  •  02-11-2007, 11:38 36890 σε απάντηση της 36885

    Απ: DataBind σε Εικονικό Database Column

    Θα πρέπει να εγκαταλείψεις την τεχνική των subqueries και να προσθέσεις τα ανάλογα DataTables στο DataSet. Κατόπιν, να γεμίζεις τους πίνακες με τις ανάλογες κλήσεις των TableAdapter και τέλος, στο DataGridView, όταν κάνεις bind στον βασικό πίνακα, για κάθε lookup πεδίο να αλλάξεις το ColumnType από DataGridViewTextBoxColumn σε DataGridViewComboBoxColumn το οποίο σου επιτρέπει να κάνεις bind στο πεδίο που σε ενδιαφέρει αλλά να δείχνει την lookup τιμή.

     


    Vir prudens non contra ventum mingit
  •  02-11-2007, 12:04 36894 σε απάντηση της 36890

    Απ: DataBind σε Εικονικό Database Column

    Επίσης, θα σου πρότεινα (αν κάτι τέτοιο εξαρτάται από εσένα) να μην υλοποιήσεις το editing πάνω στο grid αλλά να προβάλεις μια νέα φόρμα γι αυτή τη δουλειά. Θα γλυτώσεις από πολλά προβλήματα που παρουσιάζονται όταν αρχίσει το validation να γίνεται λίγο πιο περίπλοκο.
    Vir prudens non contra ventum mingit
  •  02-11-2007, 12:11 36896 σε απάντηση της 36890

    Απ: DataBind σε Εικονικό Database Column

    Φίλε KelMan δοκίμασα και αυτή την λύση αλλά αντιμετωπίζω το εξής πρόβλημα.
    Οι στήλες του DatagridView CategoryID & ProductID είναι αληλοσχετιζόμενες.
    Που σημαίνει ότι αν ο χρήστης αλλάξει κάτι στο DataGridViewComboBoxColumn του CategoryID μέσα απο το DatagridView θα πρέπει το DataGridViewComboBoxColumn ProductID να γεμίσει με τις εγγραφές που συμφωνούν με το CategoryID.

    Ετσι αν πω :

    ProductsTableAdpater.FillProductsByCategoryID(ProductsDataSET, CategoryID) δεν ξέρω με ποιο τρόπο να βρω το επιλεγμένο value απο το CategoryID DataGridViewComboBoxColumn.

     

    Συμπληρώνω στο 2o ποστ σου μιας και εγραφα οταν το εβάλες

    Κάνω Edit σε bind controls και οχι μεσα στο Grid για λόγους Validation όπως είπες. To Θέμα είναι οτι οι στηλες CategoryID και ProductID δείχνουν ID's αντι για περιγραφές.
    Αν μετατρέψω σε DataGridViewComboBoxColumn θα παίξει αλλα δε μου αρεσει η ιδεα να εχω DataGridViewComboBoxColumn μεσα στο DataGridView αφου στην ουσια ειναι read only
    και ο χρηστης διορθωνει σε ξεχωριστα controls.

    το ζητούμενο δηλαδη ειναι οι στήλες CategoryID & ProductId να δειξουν περιγραφή και οχι τα ID's

     

     

     

  •  02-11-2007, 12:23 36897 σε απάντηση της 36896

    Απ: DataBind σε Εικονικό Database Column

    Μπορείς να το ρυθμίσεις ώστε να είναι χαζό και να μην κάνει drop down.


    Vir prudens non contra ventum mingit
  •  02-11-2007, 13:34 36901 σε απάντηση της 36897

    Απ: DataBind σε Εικονικό Database Column

    Τελικά αφαίρεσα το DatagridView και εμφανίζω τις εγγραφές σε Binding Controls.

    Το πρόβλημα που αντιμετωπίζω όμως τώρα είναι το εξής :

    Για κάθε row που εμφανίζεται θέλω να κάνω κάποιες πράξεις μεταξύ 2 columns και να εμφανίζω το αποτέλεσμα σε ενα textbox καθε φορα που ο χρήστης κάνει navigation απο το bindingnavigator.

    Πως μπορεί να γίνει αυτό ;

  •  02-11-2007, 13:48 36903 σε απάντηση της 36901

    Απ: DataBind σε Εικονικό Database Column

    Εντάξει το βρήκα

    BindingSource.Current("ColumnName")

  •  09-11-2007, 11:00 37142 σε απάντηση της 36903

    Απ: DataBind σε Εικονικό Database Column

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

    Όποιος μου την βρεί τον κερνάω Πίτσες και Μπύρες.

    Ενας πίνακας έχει 2 columns

    CategoryID
    ProductID

    Γεμίζω ενα DataSet και εμφανίζω ενα datagridview οπως φαίνεται παρακάτω.

    CategoryID      ProductID
    -----------------------------
         45                  2

    Αυτό όμως είναι εντελώς user unfriently και ετσι το sql query που γεμίζει το DataSet περιέχει subqueries και επιστρέφει απο άλλους πίνακες τα λεκτικά για κάθε CategoryID και ProductID αντίστοιχα.
    Ετσι στο Column1 του DataGridView επιλέγω το "Fake" Colunm που είναι το Category.

    Πολύ ωραία μέχρι εδώ.
    Το DataGridView τωρα φαίνεται έτσι :

    CategoryID             ProductID
    ------------------------------------
    ΦΟΥΣΤΕΣ            ΜΙΝΙ ΦΟΥΣΤΕΣ


    Τώρα όταν ο χρήστης επιλέξει ενα row υπάρχουν 2 comboboxes έξω απο το DataGridView με FΚ και εμφανίζουν τα αντίστοιχα δεδομένα. Ο χρήστης κάνει αλλαγή στην Κατηγορία και έτσι τα Προιόντα φιλτράρονται με βάση αυτό. Επιλέγει και το προϊόν που θέλει και μετακινείται σε άλλο row.
    Το row όμως που διόρθωσε δεν εμφανίζει τις αλλαγές που έκανε.
    Τι τρόπος υπάρχει ούτως ώστε να μπορούμε να εμφανίζουμε την περιγραφή που την διαβάζει απο άλλο πίνακα και όχι τα IDs ;

     

     

     

     

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