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

 

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

Δυναμική εμφάνιση Controls

Îåêßíçóå áðü ôï ìÝëïò infoCENTER. Τελευταία δημοσίευση από το μέλος KelMan στις 26-07-2008, 09:04. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  25-07-2008, 14:29 43687

    Δυναμική εμφάνιση Controls

    Τον τελευταίο καιρό έχω πέσει πάνω σε μία περίπτωση όπου με έχει μπερδέψει αρκετά. Έχω ένα Custom Object. Ας πούμε Item.

    Το item αυτό μπορεί να έχει τα εξής στοιχεία. Χονδρική Τιμή, Τελευταία ημερομηνία αγοράς, προμηθευτής. Ας πούμε αυτή είναι η εικόνα που θα ήθελε να δει το λογιστήριο.

    Επίση Ποσότητα, Ράφι, αυτή είναι η εικόνα που θα ήθελε να δει η αποθήκη.

    Τιμή Πώλησης, Ποσότητα, Επόμενη ημερομηνία Παραλαβής η εικόνα που θα ήθελε να δει ένας προμηθευτής,

    και Τιμή Πώλησης, Διαθέσιμο, Ημερομηνία Παράδοσης η εικόνα ενός πελάτη.

    Θέλω όλες αυτές τις πληροφορίες να τις κάνω Bind σε μία φόρμα και να βάλω τα αντίστοιχα Buttons που θα αντιπροσωπεύουν την οπτική γωνία από την οποία θα βλέπω το Item αυτό. Δεν θέλω να ανοίγω καινούριες φόρμες ούτε να παίξω με Tab Control. Πιο πολύ το βλέπω σαν εργασία και δική μου ενασχόληση πάνω στο θέμα αυτό.

    Όταν λοιπόν πατάω λογιστήριο και θα θέλω να δω τα στοιχεία του Item που να αφορούν το λογιστήριο, ποιος θα είναι εκείνος ο μηχανισμός που θα ρωτάει το object αν θα πρέπει το property αυτό να φανεί στην φόρμα, και πως βρίσκω ποια controls έχουν γίνει bind στο property αυτό για να τα κάνω hidden;

    Το παράδειγμα είναι πολύ απλό και παρακαλώ ας μην συγκεντρωθούμε στο ίδιο το object αλλά στον μηχανισμό που ανέφερα. Έχετε αντιμετωπίσει κάτι παρόμοιο; Τι λέτε;

    Προσωπικά έχω κάνει μία αναζήτηση στο net αλλά δεν μπορώ να πω ότι βρήκα κάτι που να μου άρεσε. Προσωπικά σκέφτομαι αρκετά καλή την ιδέα (σε θεωρητικό επίπεδο, δεν έχω γράψει κώδικα) με attributes σε κάθε Property που να αναφέρονται σε ποια ομάδα ανήκουν. Οι τιμές (των attributes) θα είναι σε ένα εξωτερικό αρχείο οπότε θα μπορώ να τις αλλάζω και εύκολα αλλά δεν έχω βρει ακόμα κάτι με τον μηχανισμό των bindings δηλαδή πως θα πω σύντομα, τα controls που είναι bind στο property αυτό να γίνουν hidden.

     

    Ευχαριστώ

    Άλλες σκέψεις ή links για το θέμα αυτό;

  •  25-07-2008, 14:51 43688 σε απάντηση της 43687

    Απ: Δυναμική εμφάνιση Controls

    Ρίξε μια ματιά σε αυτό: http://msdn.microsoft.com/en-us/library/ms954610.aspx Μπορεί να πάρεις καμιά καλή ιδέα. Πχ θα μπορούσες με ανάλογο τρόπο να φτιάξεις ένα custom control.


    Vir prudens non contra ventum mingit
  •  25-07-2008, 15:34 43690 σε απάντηση της 43688

    Απ: Δυναμική εμφάνιση Controls

    Του έριξα μία ματιά. Ήμουν login στο site οπότε είδα γρήγορα την απάντησή σου.

    Από τον τίτλο μου φάνηκε αρκετά ενδιαφέρων και θα έλεγα ότι ταιριάζει με αυτό που θέλω αλλά έχει μία στατικότητα και αυτό. Δηλαδή σχεδιάζεις την φόρμα σε XML, μέσω Add In μηχανισμού του IDE την φορτώνεις στην φόρμα σου, κάνεις Debug και τελείωσες. Παραθέτω την τελευταία του πρόταση 

    In this article, we discussed an approach to implementing repository or metadata-driven user interfaces using the .NET Framework. We also explained how to use the .NET Framework classes to create a customized forms designer, store the form as XML, load the XML file into the designer, modify the XML file, and then load and run the form.

    Σκέψου ότι στον σχεδιασμό της φόρμας, έχω ήδη βάλει επάνω όλα τα controls, οπότε την έχω ήδη σχεδιάσει, αλλά στο runtime θα ήθελα κάποια από αυτά να φαίνονται και άλλα όχι ανάλογα με τις επιλογές του χρήστη. Βέβαια η λύση αυτή αναφέρεται σε μία μεγαλύτερης κλίμακας έλεγχο και σχεδιασμό, είδα Events στα XML, οπότε υποθέτω ανάλογα με τον χρήστη και τον ρόλο του θα επιτρέπονται κάποιες κινήσεις κτλ. Δεν είναι άσχημο και σίγουρα με οδηγεί προς κάποια κατεύθυνση, αλλά δεν είναι ακριβώς αυτό που ψάχνω σε αυτήν την περίπτωση. Κάτι πιο απλό;

  •  25-07-2008, 15:48 43692 σε απάντηση της 43690

    Απ: Δυναμική εμφάνιση Controls

    Δες και αυτό το Post. Αυτό που θέλεις να κάνεις έχει πολλά ποδάρια και δεν είναι τόσο απλό όσο το περιγράφεις. Μιλάω από πείραCrying

    Manos
  •  25-07-2008, 19:17 43698 σε απάντηση της 43692

    Απ: Δυναμική εμφάνιση Controls

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

    Εγώ κάτι απλό ζητάω. Πάνω σε μία φόρμα έχω 4 κουμπιά. Λογιστήριο, Αποθήκη, Πωλητής, Πελάτης και στην φόρμα ένα object φορτωμένο ήδη με όλα τα properties να έχουν γίνει ήδη bind. Ανάλογα με πιο κουμπί πατάω θα ήθελα κάποια controls να κρύβονται. θα μπορούσα να γράψω κώδικα, αλλά θέλω η λύση να είναι πιο ευέλικτη και πιο σωστή με σκοπό να μπορώ να την χρησιμοποιήσω σε μελλοντικά projects μου. Στο πρώτο μου post περιέγραψα, ας πούμε, μία πρώτη μου σκέψη με Attributes, κολλάω όμως στον μηχανισμό να βρω ποια controls έχουν γίνει bind σε ποιο property. Αν ξέρει κανείς να μου πει κάτι πάνω σε αυτό παρακαλώ να μου το αναφέρει.

    Από την άλλη κρατάω και μία επιφύλαξη για τα Attributes με την σκέψη ότι μπορεί κάποιος άλλος να έχει βρει κάτι άλλο καλύτερο.

  •  26-07-2008, 09:04 43702 σε απάντηση της 43698

    Απ: Δυναμική εμφάνιση Controls

    Και όμως, δεν είναι και τόσο απλό. Μιλάς για ρόλους, έστω και αν δεν είναι nested. Και εφόσον θες να τη χρησιμοποιήσεις σε μελλοντικά projects, θα πρέπει να είναι και σε κάποιο βαθμό generic ώστε να είναι re-usable χωρίς να χρειάζεται να κάνεις αλλαγές στον κώδικα.

    Πάντως, ως προς το πρόβλημα σου με τα bindings, να σου πω ότι κάθε φόρμα έχει ένα property που ονομάζεται DataBindings το οποίο είναι τύπου System.Windows.Forms.ControlBindingsCollection. Το collection αποτελείται από Binding objects τα οποία έχουν ένα property BindingMemberInfo μέσω του οποίου μπορείς να διαβάσεις πληροφορίες όπως το Field και το Member που έχουν γίνει bind. Θα μπορούσες λοιπόν τελικά να ορίσεις τα bindings δυναμικά, να έχεις για κάθε ρόλο και από ένα binding set και να ενεργοποιείς/απενεργοποιείς ανάλογα.


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