<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>WinForms</title><link>https://www.dotnetzone.gr:443/cs/forums/12/ShowForum.aspx</link><description>Θέματα για rich client / windows εφαρμογές, σε οποιαδήποτε γλώσσα (VB.NET, C#, managed C++, κ.α.)</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Windows Forms data-binding με BindingSource control &amp; Validation με ErrorProvider control -</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/64146.aspx</link><pubDate>Sat, 12 Mar 2011 20:13:27 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:64146</guid><dc:creator>George Parissis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/64146.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=64146</wfw:commentRss><description>&lt;P&gt;Βάθος δεν υπάρχει, τα πράγματα είναι πολύ απλά. Το θέμα είναι ότι έχεις καιρό να ασχοληθείς. Υλοποιείς ένα, δύο&amp;nbsp;ή και περισσότερα interfaces ανάλογα με αυτό που θέλεις να κάνεις και τα υπόλοιπα τα αναλαμβάνει το DataBinding. Και αν στο project που έχεις σκοπό να κάνεις χρησιμοποιείς και controls τρίτων κατασκευαστών τότε μπορεί να γλυτώσεις και μερικές υλοποιήσεις παραπάνω. &lt;/P&gt;
&lt;P&gt;Γράψε implementation για το INotifypropertyChanged &amp;amp; IDataErrorInfo και για τα υπόλοιπα βλέπεις και κάνεις. Αυτό είναι το βασικό σενάριο που όπως είπα θα σε εξυπηρετήση στο μεγαλύτερο ποσοστό των περιπτώσεων. Όσο για το IEditableObject γνώμη μου είναι πως είναι ένα προβληματικό Interface. Θα συνιστούσα στην περίπτωση αυτή να φτιάξεις ένα δικό σου μηχανισμό για να κρατάς της original τιμές των πεδίων σου. Θα αναφέρω ένα κοινό παράδειγμα για να καταλάβεις για πιο λόγο το λέω αυτό.&lt;/P&gt;
&lt;P&gt;Ας υποθέσουμε ότι έχουμε ένα grid το οποίο έχει κάποιες εγγραφές. Κάθε φορά που κάνεις navigation στα rows του grid ο μηχανισμό DataBinding καλεί την BeginEdit &amp;amp; EndEdit για κάθε row στο οποίο πας και από το οποίο φεύγεις. Αυτό σημαίνει πως αν κάνεις μία αλλαγή σε ένα row και&amp;nbsp;φύγεις από το συγκεκριμένο row ο μηχανισμός DataBinding θα καλέσει την EndEdit οπότε θα θεωρήσει πως οι τρέχουσες τιμές των πεδίων σου είναι και οι αρχικές. Αυτό όμως δεν είναι το ζητούμενο. Το ζητούμενο είναι αν ο χρήστης θελήσει στην πορεία για ένα row να αναιρέσει τις αλλαγές που έχει κάνει θα θέλει να δει στο συγκεκριμένο row τις τιμές που διάβασε από την βάση ή αυτές που υπήρχαν την τελευταία φορά που πάτησε αποθήκευση κάτι όμως που με το IEditableObject δεν γίνεται. Βέβαια στην περίπτωση αυτή θα μπορούσε κάποιος να αναφέρει τον μηχανισμό του Refresh. Δηλαδή αν θέλει ο χρήστης να αναιρέσει αλλαγές που έχει κάνει στο Grid να πατήσει το Refresh και όχι το Undo ας πούμε. Υπάρχει όμως διαφορά μεταξύ Refresh και Undo. Στο σενάριο όπου η εφαρμογή είναι Single User καμία αλλά σε Multi user υπάρχει.&lt;/P&gt;
&lt;P&gt;Επίσης σχετικά με το IDataErrorInfo όλα τα controls είναι σε θέση να κάνουν ένα validation σε επίπεδο Data Type. Δηλαδή εκεί που ο μηχανσιμός περιμένει ημερομηνία να μην περάσουμε αλφαριθμητικό, όμως όπως είναι φυσικό δεν μπορούν να κάνουν BusinessValidation. Δηλαδή θέλω για παράδειγμα οι ημερομηνίες που θα δίνω στο χι πεδίο να είναι πάντα μελλοντικές ή το email που γράφω να είναι σωστό ή οτιδήποτε άλλο. &lt;/P&gt;
&lt;P&gt;Αυτά.&lt;/P&gt;</description></item><item><title>Απ: Windows Forms data-binding με BindingSource control &amp; Validation με ErrorProvider control -</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/64083.aspx</link><pubDate>Thu, 10 Mar 2011 09:53:33 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:64083</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/64083.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=64083</wfw:commentRss><description>&lt;p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;KelMan:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Χα χα, μου φαίνεται ότι δουλεύεις πολύ edge τεχνολογίες και σου κακοφαίνονται οι καθιερωμένες ευκολίες των τεχνολογιών που παίζουν εδώ και χρόνια!&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;Δεν είναι κρυφό ότι μετά το 2000 δεν έχω ασχοληθεί καθόλου με φόρμες - κατά βάση ότι έχω κάνει από εκεί και πέρα είναι μόνο Web. Οπότε Windows Forms με .NET Framework ουσιαστικά είναι πρώτη φορά που ασχολούμαι και προσπαθώ να πάω σε βάθος...&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;George J.&lt;br&gt;&lt;/p&gt;</description></item><item><title>Απ: Windows Forms data-binding με BindingSource control &amp; Validation με ErrorProvider control -</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/64082.aspx</link><pubDate>Thu, 10 Mar 2011 09:50:24 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:64082</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/64082.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=64082</wfw:commentRss><description>&lt;p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Markos:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;Όσον αφορά στο validation, τα πράγματα είναι απλά. Ένα σχετικό άρθρο είναι το &lt;a href="http://blogs.msdn.com/b/bethmassi/archive/2008/02/25/simple-validation-with-linq-to-sql-classes.aspx"&gt;Simple Validation with LINQ to SQL classes&lt;/a&gt;, της Beth Massi. Μία γενικότερη εισαγωγή πάνω στο θέμα του custom object binding προσφέρουν &lt;a href="http://msdn.microsoft.com/el-gr/vbasic/ff718217"&gt;αυτά &lt;/a&gt;τα εισαγωγικά videos. Για πιο προχωρημένα πράγματα, όπως multicolum filtering μπορεί κανείς να ανατρέξει σ' &lt;a href="http://blogs.msdn.com/b/winformsue/archive/2008/05/19/implementing-filtering-on-the-ibindinglistview.aspx"&gt;αυτό &lt;/a&gt;το άρθρο. Επίσης, μια χρήσιμη πηγή είναι κι &lt;a href="http://msdn.microsoft.com/en-us/library/aa480736.aspx"&gt;αυτή&lt;/a&gt;.&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;Ευχαριστώ για τα pointers - ιδιαίτερα το &lt;a href="http://blogs.msdn.com/b/winformsue/"&gt;Windows Forms Documentation Updates&lt;/a&gt; blog είναι εκπληκτικό τι έχει μέσα και πόσα whitepapers παραβάλει μέσα από το MSDN Library, καθώς και το &lt;a href="http://www.mikedub.net/"&gt;προσωπικό site του Michael Weinhardt&lt;/a&gt;&amp;nbsp;με&amp;nbsp;συνδέσμους για τα άρθρα του.&amp;nbsp;Πρέπει να πω ότι πέρασα 5 υπέρoχες ώρες...&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;George J.&lt;br&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Απ: Windows Forms data-binding με BindingSource control &amp; Validation με ErrorProvider control -</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/64080.aspx</link><pubDate>Thu, 10 Mar 2011 06:23:08 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:64080</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/64080.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=64080</wfw:commentRss><description>&lt;P&gt;Χα χα, μου φαίνεται ότι δουλεύεις πολύ edge τεχνολογίες και σου κακοφαίνονται οι καθιερωμένες ευκολίες των τεχνολογιών που παίζουν εδώ και χρόνια!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Windows Forms data-binding με BindingSource control &amp; Validation με ErrorProvider control -</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/64079.aspx</link><pubDate>Thu, 10 Mar 2011 05:22:11 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:64079</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/64079.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=64079</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;KelMan:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Γιατί το παιδεύεις τόσο πολύ; Αν θυμάμαι καλά, το DataGridView τσιμπάει αυτόματα το IDataErrorInfo οπότε δεν θα έχεις πρόβλημα. Δοκίμασέ το σε ένα proof-of-concept να δεις...
&lt;p&gt;Ως προς την έξυπνη σχεδίαση, εννοούσα (μιας και χρησιμοποιήσεις Τ4) να βάλεις partial classes και να υλοποιούνται έτσι κι αλλιώς τα IEditableObject,&amp;nbsp;κλπ&amp;nbsp;ώστε αν απαιτηθεί κάποιος να μπορεί με το partial class να προσθέσει εύκολα το απαραίτητο functionality.&lt;/p&gt;
&lt;p&gt;Πάντως, σκοπεύεις να κάνεις edit πάω στο DataGridView; Γενικά εγώ το αποφεύγω όσο&amp;nbsp;μπορώ και προτιμώ να βγάζω child form. Συνήθως φαίνεται εύκολο στην αρχή αλλά σταδιακά έρχονται απαιτήσεις που στο τέλος λες "να είχα βάλει child form να τελείωνα".&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;Το παιδεύω -&amp;nbsp;το παιδεύω, γιατί ετοιμάζομαι να&amp;nbsp;στήσω επάνω σε αυτό ένα project που "θα τρέξει" για τουλάχιστον 5 χρόνια, αν όχι και περισσότερο. Αν βάλεις ότι έχω και εκπαιδεύω 2 άτομα σε .NET για αυτό το σκοπό, και θα ακολουθήσουν ακόμα 2, θέλω να είμαι πολύ σίγουρος ότι δεν μου έχει ξεφύγει κάτι.&lt;/p&gt;&lt;p&gt;Επειδή το proof-of-concept δουλεύει&amp;nbsp;πολύ ωραία με την Northwind, και η υλοποίηση είναι σχεδόν ασήμαντη, και αυτοματοποιτείται με ελάχιστο κόπο, είναι και ο λόγος που&amp;nbsp;το θεωρώ&amp;nbsp;"too good to be true".&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;George J.&lt;br&gt;&lt;/p&gt;</description></item><item><title>Απ: Windows Forms data-binding με BindingSource control &amp; Validation με ErrorProvider control</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/64060.aspx</link><pubDate>Wed, 09 Mar 2011 20:36:39 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:64060</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/64060.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=64060</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;George J. Capnias:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;... &lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Και μετά κατάλαβαν τι λάθος έκαναν - τα objects ήταν "too heavy" για να χρησιμοποιηθούν για άλλους σκοπούς εκτός από το DataBinding - έτσι και πρέκυψε το IBindingList&amp;lt;T&amp;gt; και IBindingListView&amp;lt;T&amp;gt; που ήρθαν με το .NET Framework v2.0, που βασικά δεν καταστούν απαραίτητη την χρήση τους πλέον...&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;George J.&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;&lt;br&gt;Τα DataRowView και DataView, μόνο DataBinding (και γενικότερα presentation) σκοπούς εξυπηρετούν. Για τα υπόλοιπα υπάρχουν τα DataTable και DataRow. Επιπλέον, όσο περισσότερα interfaces υλοποιεί κανείς τόσο "παχαίνει" τα objects του. Το πρόβλημα ποτέ δεν ήταν τα DataSets και τα DataTables, αλλά το γεγονός ότι οι προγραμματιστές ποτέ δεν κατάλαβαν πως πρέπει να στείλουν τις αλλαγές στη βάση. Αυτό, όμως, είναι θέμα μιας άλλης συζήτησης.&lt;br&gt;&lt;br&gt;Όσον αφορά στο validation, τα πράγματα είναι απλά. Ένα σχετικό άρθρο είναι το &lt;a href="http://blogs.msdn.com/b/bethmassi/archive/2008/02/25/simple-validation-with-linq-to-sql-classes.aspx"&gt;Simple Validation with LINQ to SQL classes&lt;/a&gt;, της Beth Massi. Μία γενικότερη εισαγωγή πάνω στο θέμα του custom object binding προσφέρουν &lt;a href="http://msdn.microsoft.com/el-gr/vbasic/ff718217"&gt;αυτά &lt;/a&gt;τα εισαγωγικά videos. Για πιο προχωρημένα πράγματα, όπως multicolum filtering μπορεί κανείς να ανατρέξει σ' &lt;a href="http://blogs.msdn.com/b/winformsue/archive/2008/05/19/implementing-filtering-on-the-ibindinglistview.aspx"&gt;αυτό &lt;/a&gt;το άρθρο. Επίσης, μια χρήσιμη πηγή είναι κι &lt;a href="http://msdn.microsoft.com/en-us/library/aa480736.aspx"&gt;αυτή&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Όσον αφορά στο presentation και το validation όταν μιλάμε για custom object ή entities, το πρόβλημα κατά τη γνώμη μου γίνεται δύσκολα διαχειρίσιμο όταν θέλει κανείς να επιβάλλει unique constraint rules. Εκεί, λόγω του fragmentation στα children lists γίνεται το "έλα να δεις"!! Το ίδιο ισχύει με το filtering, αν κανείς θέλει να επιβάλλει κάποιο rule σε όλα τα children. Εκεί το DataSet είναι απλά, "αχτύπητο"...&lt;br&gt;</description></item><item><title>Απ: Windows Forms data-binding με BindingSource control &amp; Validation με ErrorProvider control -</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/64059.aspx</link><pubDate>Wed, 09 Mar 2011 19:23:37 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:64059</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/64059.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=64059</wfw:commentRss><description>&lt;P&gt;Γιατί το παιδεύεις τόσο πολύ; Αν θυμάμαι καλά, το DataGridView τσιμπάει αυτόματα το IDataErrorInfo οπότε δεν θα έχεις πρόβλημα. Δοκίμασέ το σε ένα proof-of-concept να δεις...&lt;/P&gt;
&lt;P&gt;Ως προς την έξυπνη σχεδίαση, εννοούσα (μιας και χρησιμοποιήσεις Τ4) να βάλεις partial classes και να υλοποιούνται έτσι κι αλλιώς τα IEditableObject,&amp;nbsp;κλπ&amp;nbsp;ώστε αν απαιτηθεί κάποιος να μπορεί με το partial class να προσθέσει εύκολα το απαραίτητο functionality.&lt;/P&gt;
&lt;P&gt;Πάντως, σκοπεύεις να κάνεις edit πάω στο DataGridView; Γενικά εγώ το αποφεύγω όσο&amp;nbsp;μπορώ και προτιμώ να βγάζω child form. Συνήθως φαίνεται εύκολο στην αρχή αλλά σταδιακά έρχονται απαιτήσεις που στο τέλος λες "να είχα βάλει child form να τελείωνα".&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Windows Forms data-binding με BindingSource control &amp; Validation με ErrorProvider control -</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/64055.aspx</link><pubDate>Wed, 09 Mar 2011 09:53:04 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:64055</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/64055.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=64055</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;George J. Capnias:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;KelMan:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Προτείνω να κοιτάξεις το βιβλίο Data Binding with Windows Forms 2.0: Programming Smart Client Data Applications with .NET του Brian Noyes.&amp;nbsp;Έχει τα πάντα μέσα, υποθέτω τα κεφάλαια 7, 9&amp;nbsp;και 10 θα σου φανούν πολύ χρήσιμα.&lt;/div&gt;&lt;/BLOCKQUOTE&gt;
&lt;p&gt;Θα κοιτάξω να βρω το βιβλίο μήπως και ανακαλύψω κάτι παραπάνω...&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;Ωραίο βιβλίο έχει αρκετά που θα είναι καλά για κάποιον που ξεκινάει, αλλά το άτιμο και πάλι δεν έχει μια αναφορά πως να κάνεις ένα DataBinding σε windows forms με custom objects και να μην το κάνει με DataGridView και να δείχνει και validation. Μέχρι και η Julie Lerman στο "&lt;a href="http://learnentityframework.com/LearnEntityFramework/tutorials/use-an-entity-framework-entity-as-a-winforms-data-source/"&gt;Use an Entity Framework Entity as a Winforms Data Source&lt;/a&gt;" η περιγραφή είναι σε DataGridView και χωρίς validation...&lt;/p&gt;&lt;p&gt;Κάτι μου λέει ότι θα αρχίσω να διαβάζω&amp;nbsp;Rockford Lhotka μπας και ανακαλύψω κάτι - Παναγιώτη σου κουνάω το "κόκκινο πανί", αρκετά σιωπηλός είσαι στο θέμα!&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;George J.&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description></item><item><title>Απ: Windows Forms data-binding με BindingSource control &amp; Validation με ErrorProvider control</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/64053.aspx</link><pubDate>Wed, 09 Mar 2011 09:39:00 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:64053</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/64053.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=64053</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Markos:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.data.datarowview%28v=VS.80%29.aspx"&gt;Τι μου θυμίζει&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.dataview%28v=VS.80%29.aspx"&gt;τι μου θυμίζει&lt;/a&gt;...&lt;br&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Μην σου θυμίζει - και το DataRowView και το DataView φτιάχτικαν για ακριβώς αυτό το σκοπό - να εξυπηρετήσουν το Windows Forms DataBinding.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Και μετά κατάλαβαν τι λάθος έκαναν - τα objects ήταν "too heavy" για να χρησιμοποιηθούν για άλλους σκοπούς εκτός από το DataBinding - έτσι και πρέκυψε το IBindingList&amp;lt;T&amp;gt; και IBindingListView&amp;lt;T&amp;gt; που ήρθαν με το .NET Framework v2.0, που βασικά δεν καταστούν απαραίτητη την χρήση τους πλέον...&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;George J.&lt;br&gt;&lt;br&gt;&lt;/div&gt;</description></item><item><title>Απ: Windows Forms data-binding με BindingSource control &amp; Validation με ErrorProvider control</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/64052.aspx</link><pubDate>Wed, 09 Mar 2011 09:34:27 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:64052</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/64052.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=64052</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;KelMan:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Γιώργο, είναι αρκετά εφόσον θες να κάνεις αυτά για τα οποία προορίζονται. Αν μείνεις στο drag'n'drop από το Data Sources window. Από εκεί και πέρα εξαρτάται το σενάριο, όπως το undo που λέγαμε. Μπορεί να ζητηθεί στην πορεία οπότε θα χρειαστείς να υλοποιήσεις και το IEditableObject. Επίσης, μπορεί να χρειαστεί να υλοποιήσεις και το ICancelAddNew. Αν φτιάξεις έξυπνα εξ αρχής την υποδομή σου δεν θα χρειαστεί αργότερα να κάνεις δύσκολo re-engineering.&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Νομίζω ότι φαντάζεσαι πάνω-κάτω τι έχω στο μυαλό μου - μιλάμε για EntityObjects ή πλέον POCOs που πολύ εύκολα - πιθανώς με κάποιο T4 - μπορείς να τα "φορτώσεις" ότι απαιτείται με την μικρότερη δυνατή υλοποίηση.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Θα μου πεις γιατί το Data Annotation -&amp;gt; δουλεύει για ASP.NET και για WPF/Silverlight. Οπότε να κάνω μια υλοποίηση για το WinForms για αυτό ουσιαστικά θα κάνει πιο "universal" τα POCOs μου, ακριβώς για να αποφύγω το re-engineering του business model μου...&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;George J.&lt;br&gt;&lt;br&gt;&lt;/div&gt;</description></item><item><title>Απ: Windows Forms data-binding με BindingSource control &amp; Validation με ErrorProvider control</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/64039.aspx</link><pubDate>Wed, 09 Mar 2011 03:08:28 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:64039</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/64039.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=64039</wfw:commentRss><description>&lt;a href="http://msdn.microsoft.com/en-us/library/system.data.datarowview%28v=VS.80%29.aspx"&gt;Τι μου θυμίζει&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.dataview%28v=VS.80%29.aspx"&gt;τι μου θυμίζει&lt;/a&gt;...&lt;br&gt;</description></item><item><title>Απ: Windows Forms data-binding με BindingSource control &amp; Validation με ErrorProvider control</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/64035.aspx</link><pubDate>Wed, 09 Mar 2011 00:36:55 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:64035</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/64035.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=64035</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;George J. Capnias:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;
&lt;P&gt;Αλλά αυτό που έχεις είναι αρκετό για DataBinding - ενημέρωση &amp;amp; validation&amp;nbsp;μέσα από DataGridView και&amp;nbsp;windows forms controls... To θέμα είναι αν τα INotifyPropertyChanging, INotifyPropertyChanged και IDataErrorInfo interfaces μπορούν να στηρίξουν λύσεις που χρησιμοποιούνται custom objects σαν Data Sources μέσα σε ένα Windows Forms project και με τους wizards να παρέχονται μέσα από το Visual Studio να ολοκληρώσεις μια λύση...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;George J.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Γιώργο, είναι αρκετά εφόσον θες να κάνεις αυτά για τα οποία προορίζονται. Αν μείνεις στο drag'n'drop από το Data Sources window. Από εκεί και πέρα εξαρτάται το σενάριο, όπως το undo που λέγαμε. Μπορεί να ζητηθεί στην πορεία οπότε θα χρειαστείς να υλοποιήσεις και το IEditableObject. Επίσης, μπορεί να χρειαστεί να υλοποιήσεις και το ICancelAddNew. Αν φτιάξεις έξυπνα εξ αρχής την υποδομή σου δεν θα χρειαστεί αργότερα να κάνεις δύσκολo re-engineering.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Windows Forms data-binding με BindingSource control &amp; Validation με ErrorProvider control</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/64032.aspx</link><pubDate>Tue, 08 Mar 2011 23:02:50 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:64032</guid><dc:creator>dimos.homatas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/64032.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=64032</wfw:commentRss><description>Χρησιμοποιώ αυτήν την Sortable Binding List:&amp;nbsp;&lt;a href="http://www.timvw.be/2007/02/22/presenting-the-sortablebindinglistt/"&gt;Presenting the SortableBindingList&amp;lt;T&amp;gt;&lt;/a&gt;&amp;nbsp;αλλά είμαι ανοιχτός σε εναλλακτικές λύσεις.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</description></item><item><title>Απ: Windows Forms data-binding με BindingSource control &amp; Validation με ErrorProvider control</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/64031.aspx</link><pubDate>Tue, 08 Mar 2011 22:32:46 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:64031</guid><dc:creator>George Parissis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/64031.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=64031</wfw:commentRss><description>&lt;P&gt;Χρησιμοποιώ Custom Objects με DataBinding σε όλες μου τις εφαρμογές. Δεν θυμάμαι να υπάρχει κάποια χωρίς DataBinding. Δεν είχα ποτέ πρόβλημα. Τα interfaces είναι δύο που θα έβαζα must να υλοποιηθούν. Το INotifyPropertyChanged και το IDatatErrorInfo αν θέλεις validation. Τα υπόλοιπα και ναι και όχι. Για παράδειγμα κάποια controls τρίτων κατασκευαστών μπορούν να κάνουν sort την λίστα σου χωρίς εσύ να έχεις υλοποιήσει κάποιο interface από την δική σου μεριά. Επίσης πάντα χρησιμοποιώ BindingList(T) όταν θέλω Events από την λίστα που κρατάει τα custom objects μου.&lt;/P&gt;
&lt;P&gt;Για τα περισσότερα σενάρια ένα BindingList μαζί με ένα custom object που να κάνει implement το INotifyPropertyChanged είσαι μια χαρά.&lt;/P&gt;</description></item><item><title>Απ: Windows Forms data-binding με BindingSource control &amp; Validation με ErrorProvider control</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/64030.aspx</link><pubDate>Tue, 08 Mar 2011 21:07:05 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:64030</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/64030.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=64030</wfw:commentRss><description>&lt;p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;KelMan:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;To BindingSource από μόνο του δεν κάνει και πολλά. Βασίζεται στο support (δηλαδή τα interfaces) που του παρέχει το binded object. Αν είναι για παράδειγμα κάποια μορφή λίστας θα πρέπει να υλοποιεί διάφορα interfaces, γι αυτόν τον λόγο το BindingSource έχει τις μεθόδους SupportsSorting(), SupportsFiltering(), SupportsSearching(), SupportsAdvancedSorting(), SupportsChangeNotification(). Το ότι έχει για παράδειγμα το property&amp;nbsp;Sort δεν σημαίνει ότι θα sortάρει τα data αν το collection δεν υποστηρίζει το IComparable (αν δεν κάνω λάθος για το όνομα του interface). Αν δεν υποστηρίζει το collection, θα ορίσεις το Sort property και απλά θα το αγνοήσει.&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;Δεν αντιλέγω σε αυτό - διαβάζοντας το &lt;a href="http://msdn.microsoft.com/en-us/library/0yy0c9z8.aspx"&gt;BindingSource Component Architecture&lt;/a&gt; - στο κάτω μέρος, αναφέρει καθαρά ότι όταν στο BindingSource λάβει ένα List&amp;lt;T&amp;gt; σαν DataSource το μετατρέπει σε IBindindList&amp;lt;T&amp;gt; - οπότε καθαρά ότι έρχεται μαζί με το IBindingListView (sorting, filtering) δεν υπάρχει...&lt;/p&gt;&lt;p&gt;Αλλά αυτό που έχεις είναι αρκετό για DataBinding - ενημέρωση &amp;amp; validation&amp;nbsp;μέσα από DataGridView και&amp;nbsp;windows forms controls... To θέμα είναι αν τα INotifyPropertyChanging, INotifyPropertyChanged και IDataErrorInfo interfaces μπορούν να στηρίξουν λύσεις που χρησιμοποιούνται custom objects σαν Data Sources μέσα σε ένα Windows Forms project και με τους wizards να παρέχονται μέσα από το Visual Studio να ολοκληρώσεις μια λύση...&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;George J.&lt;br&gt;&lt;/p&gt;</description></item></channel></rss>