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

 

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

Στη Φόρτωση DatagridView χρηση timer

Îåêßíçóå áðü ôï ìÝëïò Δημήτρης Μπούνδρης. Τελευταία δημοσίευση από το μέλος masteripper στις 13-04-2010, 14:31. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  12-04-2010, 12:45 58040

    Στη Φόρτωση DatagridView χρηση timer

    Καλημέρα,

     

    Έχετε καμία ιδέα πως μπορούμε να δημιουργήσουμε κατά την φόρτωση ενός DatagridView(σε windows app) ένα παραθυράκι σαν αυτό του Τoad (statetement processing…), γιατί πρόκειται η φόρτωση του grid να διαρκέσει έως και 40 λέπτα. Να χρησιμοποιησω timer? Θα προτιμουσα να φαινεται ο χρονος επισης.


    Dimitris Boundris
    Software Engineer
  •  12-04-2010, 12:58 58042 σε απάντηση της 58040

    Απ: Στη Φόρτωση DatagridView χρηση timer

    Δες τον BackgroundWorker http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

    Αλλά 40 λεπτά ένα grid? Κάτι σάπιο υπάρχει στο βασίλειο της Δανιμαρκίας...

     


    Vir prudens non contra ventum mingit
  •  12-04-2010, 13:35 58046 σε απάντηση της 58042

    Απ: Στη Φόρτωση DatagridView χρηση timer

    40 λεπτά; Τόσο παίρνει να τρέξει το query; Μήπως να του έβαζες πρώτα να τρέξει, να τα φορτώσεις σε ένα temp πίνακα και να δείξεις τα δεδομένα απο εκεί; Εγώ πάντως έαν ήμουν χρήστης δεν θα ήθελα να περιμένω 40 λεπτά χωρίς να μπορώ να κάνω κάτι, έστω κι εάν είχα ένα loading παράθυρο μπροστά μου με χρόνους κλπ.. Εννοώ ότι καλό θα ήταν να το τρέξεις εντελώς στο background και να δίνεις info πχ απο την Status Bar.
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  12-04-2010, 14:09 58048 σε απάντηση της 58046

    Απ: Στη Φόρτωση DatagridView χρηση timer

    Ευχαριστώ για τις ιδέες.

    Μάλλον θα το δουλέψω στο background. Αλλά και πάλι είναι χρήσιμος ο counter μιας και θα τον χρησιμοποιήσω αλλού.

    Όσο για το χρόνο είναι πράγματι μεγάλος γιατί κάνει retrieve σε πίνακα με εκατομμύρια rows.

     


    Dimitris Boundris
    Software Engineer
  •  12-04-2010, 14:44 58050 σε απάντηση της 58048

    Απ: Στη Φόρτωση DatagridView χρηση timer

    Μάλλον πρέπει να ξανασκεφτείς αυτό που θέλεις να κάνεις. Κανένας χρήστης, Ο,ΤΙ και να λέει, δεν θέλει να ψάχνει μόνος του σε εκατομμύρια rows (για να μην πούμε για την φρικτή κατανάλωση μνήμης και τις καθυστερήσεις που θα προκληθούν). Αν σου λένε ότι θέλουν να τα γυρίσουν όλα, κάτι άλλο συμβαίνει. Μπορεί να θέλουν κάποιο search το οποίο λείπει από την εφαρμογή σου, μπορεί να θέλουν να δουν ταξινομημένα κάποια δεδομένα για να τα τυπώσουν, μπορεί να θέλουν κάτι άλλο. Αυτό που ΠΟΤΕ δεν θέλουν, είναι να ψάχνουν μία-μία μερικές χιλιάδες εγγραφές - πόσο μάλλον εκατομμύρια.

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

    • Η απλούστερη λύση φυσικά είναι να χρησιμοποιήσεις paging (εννοείται σε επίπεδο βάσης) έτσι ώστε το grid να φορτώνει μόνο λίγα δεδομένα τη φορά. Βέβαια, σα λύση δεν είναι πολύ καλύτερη από το "φέρτα όλα" καθώς πάλι δεν αναγνωρίζεις και δεν λύνεις το πρόβλημα των χρηστών.
    • Αν αυτό που θέλουν οι χρήστες είναι η αναζήτηση, μία πολύ καλύτερη λύση είναι να υλοποιήσεις search-as-you-type έτσι ώστε ο χρήστης να μπορεί να ψάξει γρήγορα γι αυτό που θέλει. Αν μάλιστα συνδυάσεις τη λύση αυτή με paging, θα αντιμετωπίσεις και το πιθανό πρόβλημα να φορτωθούν πάρα πολλές εγγραφές όταν ο χρήστης εισάγει τα πρώτα 1-2 γράμματα.
    • Μήπως οι χρήστες θέλουν όλες τις εγγραφές για να τυπώσουν "σεντόνια"? Αυτό λέγεται "report" και δεν γίνεται με ένα grid. Σε αυτή την περίπτωση θα πρέπει να χρησιμοποιήσεις κάποιο εργαλείο για reporting για να φτιάξεις τα reports που σου ζητάνε

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  12-04-2010, 16:15 58054 σε απάντηση της 58050

    Απ: Στη Φόρτωση DatagridView χρηση timer

    Ευχαριστώ πολύ Παναγιώτη,

     

    Βασικά το query καθυστερεί γιατί παράγει report για χρεώσεις τηλεφωνίας για παραπάνω από 3 χρόνια. Το τελικά αποτέλεσμα είναι grouped by και είναι περίπου 10-15 χιλιάδες εγγραφές. Άρα είναι το query που αργεί και όχι η φόρτωση στο grid.


    Dimitris Boundris
    Software Engineer
  •  13-04-2010, 14:31 58075 σε απάντηση της 58054

    Απ: Στη Φόρτωση DatagridView χρηση timer

    Σε κάτι δοκιμές που έκανα μου φάνηκε φοβερή λύση για περιπτώσεις DGV Με πολλές εγγραφές το "Virtual Mode with Caching"..είναι απο κάτι Code Samples της MS.

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