<?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>Απ: Refresh του Grid της Parent form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/58895.aspx</link><pubDate>Tue, 01 Jun 2010 09:59:37 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:58895</guid><dc:creator>infoCENTER</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/58895.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=58895</wfw:commentRss><description>&lt;P&gt;Στην πρώτη απάντηση που σου έδωσα σου δίνω 3 λύσεις. Διάλεξε αυτή που σου ταιριάζει πιο πολύ. Αν και ένα παράδειγμα με μία model form είναι εύκολο αυτό που ζητάς δεν είναι και τόσο. Όχι γιατί είναι δύσκολο να γίνει απλά πρέπει να λάβουμε υπόψιν και την σχεδίαση της εφαρμογής αλλά και τι θέλουμε να κάνουμε. Παράδειγμα θα ανοίγω νέα φόρμα για κάθε επιλογή του χρήστη στο grid; Αν ναι, τότε αν ο χρήστης διαγράψει μία ανοιχτή εγγραφή τότε λογικά θα πρέπει να κλείσω και την φόρμα που έδειχνε την εγγραφή αυτή. Οπότε κάπου χρειάζομαι να κρατάω μία λίστα με τις εγγραφές και τις φόρμες που έχω ανοίξει. &lt;/P&gt;
&lt;P&gt;Το άλλο σενάριο λέει όχι θέλω να έχω μία φόρμα κάθε φορά ανοιχτή και αν ο χρήστης αλλάξει εγγραφή στο grid τότε να αλλάξουν και τα δεδομένα της φόρμας. Αν όμως έχουν γίνει αλλαγές θα πρέπει να αφήσεις τον χρήστη να πάει σε άλλη εγγραφή χωρίς να τον ρωτήσεις αν θέλει να της αποθηκεύση; Μάλλον όχι αλλά και ναι, εξαρτάται από την εφαρμογή. Οπότε όπως καταλαβαίνεις δεν μπορώ να σου γράψω ένα παράδειγμα.&lt;/P&gt;
&lt;P&gt;Η πιο εύκολη λύση είναι να περάσεις το BindingSource σαν παράμετρο στην φόρμα και να κάνεις τα control bind στο BindingSource. Από εκεί και πέρα υπάρχουν ένα σωρό διαφορετικές σχεδιάσεις και υλοποιήσεις.&lt;/P&gt;
&lt;P&gt;Η ακόμα πιο εύκολη λύση είναι να χρησιμοποιήσεις modal φόρμα και αν σου μείνει χρόνος στο τέλος μέχρι να παραδώσεις ασχολήσου με αυτό.&lt;/P&gt;</description></item><item><title>Απ: Refresh του Grid της Parent form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/58891.aspx</link><pubDate>Mon, 31 May 2010 20:58:12 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:58891</guid><dc:creator>pap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/58891.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=58891</wfw:commentRss><description>Ωραία μου δούλεψε μια χαρά! Αν θέλω όμως να έχω Modeless Form, και να γίνεται εισαγωγή εγγραφή χωρίς τη χρήση DialogResult πως θα γίνει; &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-7.gif" alt="Tongue Tied" /&gt;&lt;br&gt;</description></item><item><title>Απ: Refresh του Grid της Parent form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/58852.aspx</link><pubDate>Fri, 28 May 2010 01:43:34 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:58852</guid><dc:creator>infoCENTER</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/58852.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=58852</wfw:commentRss><description>&lt;P&gt;Σε VB θα το γράψω βέβαια ;)&lt;/P&gt;
&lt;P&gt;Είχα λίγο χρόνο και αντί να κάθομαι να σου γράφω κομμάτια κώδικα αποφάσισα να φτιάξω ένα μικρό Demo κοντά σε αυτό που πας να κάνεις. Πρόσεξε στην φόρμα που δείχνει αναλυτικά την εγγραφή πόσο λίγος είναι ο κώδικας σε σχέση με αυτό που σου έλεγα.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Refresh του Grid της Parent form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/58840.aspx</link><pubDate>Thu, 27 May 2010 22:06:38 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:58840</guid><dc:creator>pap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/58840.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=58840</wfw:commentRss><description>Ομολογώ πως έχω χαθεί τελείως &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-4.gif" alt="Stick out tongue" /&gt;. Στην περίπτωση μου δεν ξέρω πως θα το κάνω. Αν μπορείς θα ήθελα να μου πεις πως να προσθέσω μια γραμμή στο gridControl και να φανεί on runtime, την ώρα δηλαδή που πατάω το Save στην φόρμα εισαγωγής εγγραφής. Θα γράψω dataTable.AddRow() και θα το "δει" το bindingSource και κατ' επέκταση το gridControl ή έχει κάποιο property το bindingSource για εισαγωγή γραμμής στη βάση και στο gridControl φυσικά?&lt;br&gt;&lt;br&gt;Γράψτο και σε VB.net δεν με πειράζει &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;br&gt;</description></item><item><title>Απ: Refresh του Grid της Parent form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/58769.aspx</link><pubDate>Sat, 22 May 2010 20:38:36 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:58769</guid><dc:creator>pap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/58769.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=58769</wfw:commentRss><description>Οk, σ' ευχαριστώ θα δοκιμάσω!!&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-2.gif" alt="Big Smile" /&gt;&lt;br&gt;</description></item><item><title>Απ: Refresh του Grid της Parent form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/58726.aspx</link><pubDate>Tue, 18 May 2010 22:28:27 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:58726</guid><dc:creator>infoCENTER</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/58726.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=58726</wfw:commentRss><description>&lt;P&gt;Και άλλος με C# (γκρρρ.... :)&lt;/P&gt;
&lt;P&gt;Δεν γνωρίζω καλά C# αλλά αν η δήλωση static είναι η αντίστοιχη της shared στην VB τότε το έχεις υλοποιήση μια χαρά.&lt;/P&gt;
&lt;P&gt;Όσο για το BindingSource. Βασικά είναι ένα control το οποίο δεν φαίνεται επάνω στην φόρμα αλλά στο κάτω μέρος αυτής. Χρησιμοποιείτε αποκλειστικά για Binding σενάρια και έχει μερικά πολύ χρήσιμα properties. Ένα κλασσικό σενάριο Binding θα ήταν π.χ Grid control --&amp;gt; DataTable. Το BindingSource έρχεται και μπαίνει ενδιάμεσα. Grid control --&amp;gt; BindingSource --&amp;gt; DataTable. Πως γίνεται αυτό. Δημιουργείς το DataTable σου κανονικά στην φόρμα, εφόσων παίζεις με DataTables. Ρίχνεις ένα BindingSource επάνω στην φόρμα και βάζεις το DataSource property να βλέπει το DataTable. Στην συνέχεια βάζεις το DataSource property του Grid να βλέπει το BindingSource. Η ίδια διαδικασία γίνεται αυτόματα από το VS αν έχεις περάσει το Datatable σαν DataSource στο project σου&amp;nbsp;και το κάνεις Drag 'n Drop στην φόρμα.&lt;/P&gt;
&lt;P&gt;Τώρα μέχρι το σημείο αυτό δεν βλέπεις να έχεις κερδίσει κάτι σε σχέση με τον προηγούμενο τρόπο, πάμε όμως να δούμε τι μας δίνει αυτό το νέο control. Ας υποθέσουμε ότι ο χρήστης έχεις επιλέξει μία εγγραφή από το Grid και θέλουμε να βρούμε ποια εγγραφή είναι αυτή. Ανάλογα με το Grid που θα έχεις στην φόρμα θα γράψεις και τον ανάλογο κώδικα για να πάρεις την επιλεγμένη εγγραφή. Π.χ&amp;nbsp;άλλο κώδικα θα θέλει το grid της Microsoft,&amp;nbsp;άλλο της DevExpress, άλλο της C1 κτλ.&amp;nbsp;Με το BindingSource όμως θα μπορούσες απλά να πάρεις την τιμή που έχει το Current&amp;nbsp;property και αναφέρεται στην&amp;nbsp;επιλεγμένη εγγραφή χωρίς να γράψεις κώδικα&amp;nbsp;που να αναφέρεται συγκεκριμένα σε κάποιο Grid. Ο ίδιος κώδικας παίζει ακόμα και αν αύριο αποφασίσεις αντί για Grid να το αλλάξεις σε List&amp;nbsp;ή σε&amp;nbsp;Tree. &lt;/P&gt;
&lt;P&gt;Ας υποθέσουμε τώρα ότι επάνω στην ίδια φόρμα, ή ακόμα και σε διαφορετική αντί για grid έχεις κάποια editors controls όπου εκεί θέλεις να δεις την επιλεγμένη εγγραφή. Δηλαδή το σενάριο είναι επιλέγω μία εγγραφή και θέλω σε μία φόρμα να δω πιο αναλυτικά την εγγραφή αυτή. Με την χρήση του BindingSource&amp;nbsp;αυτό είναι παιχνιδάκι.&amp;nbsp;Αυτό που κάνω είναι να περάσω το BindingSource σαν παράμετρο στην φόρμα αυτή και οι Editors που υπάρχουν θα παίρνουν τις τιμές τους από το Current property του BindingSource. Οπότε ακόμα και αν έχεις τις δύο φόρμες, αυτή του grid και αυτή με τους editors,&amp;nbsp;και αλλάζεις εγγραφή στο grid θα ενημερώνεται αυτόματα και η φόρμα των editors με τις ανάλογες τιμές. Αν τώρα αλλάξεις κάτι στους editors τότε θα αλλάξει και στο grid. Για να μπορέσουν οι editors να πέρνουν την τιμή του current θα πρέπει να κάνεις Bind το property Text ή όποιο άλλο property π.χ για τα CheckBoxes είναι το Checked με το αντίστοιχο πεδίο του DataSource του BindingSource. Οπότε με τον τρόπο αυτό αποφεύγεις να πέρνεις τις τιμές από κάθε ένα control ή και ακόμα να τις βάζεις σε κάθε ένα control. Σίγουρα υπάρχουν αρκετά video στο net για χρήση του BindingSource. Είναι ένα αρκετά εύκολο control το οποίο δίνει μεγάλη ευκολία στον προγραμματιστή. &lt;/P&gt;
&lt;P&gt;Φυσικά τα σενάρια στα οποία θα μπορούσε να χρησιμοποιηθεί το BindingSource πέρα από το παράδειγμα που έγραψα είναι και άλλα, απλά αυτό που ανέφερα είναι αυτό που πας να κάνεις εσύ. Θα έλεγα να το μάθεις asap και θα δεις πόσο θα αλλάξει τον τρόπο που δουλεύεις.&lt;/P&gt;</description></item><item><title>Απ: Refresh του Grid της Parent form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/58723.aspx</link><pubDate>Tue, 18 May 2010 20:23:58 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:58723</guid><dc:creator>pap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/58723.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=58723</wfw:commentRss><description>infoCENTER ευχαριστώ που αφιερώνεις τόσο χρόνο για να γράψεις αναλυτικά πάνω στην απορία μου. Λοιπόν παραθέτω κώδικα να δεις πως χρησιμοποιώ το Singleton pattern στην εφαρμογή μου ώστε να αποφανθείς αν το χρησιμοποιώ σωστά.&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;class&lt;/span&gt; ContactRepository
{
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;private&lt;/span&gt; OleDbDataAdapter _contactDataAdapter;
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;private&lt;/span&gt; OleDbCommand _selectCommand;
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;private&lt;/span&gt; OleDbCommand _insertCommand;
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;private&lt;/span&gt; OleDbConnection _connection;
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;private&lt;/span&gt; DataSet _contactDataset;

    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;private&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;static&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;readonly&lt;/span&gt; ContactRepository _instance &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;new&lt;/span&gt; ContactRepository();

&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;private&lt;/span&gt; ContactRepository()
{
    _contactDataAdapter &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;new&lt;/span&gt; OleDbDataAdapter();
    _contactDataset &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;new&lt;/span&gt; DataSet();
    _connection &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;new&lt;/span&gt; OleDbConnection(App.GetConnectionString());

   &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; (_connection.State == ConnectionState.Closed)
        _connection.Open();

    _contactDataAdapter.SelectCommand &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;new&lt;/span&gt; OleDbCommand(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"SELECT surname, firstname, city, address, mobilephone, homephone FROM Contact"&lt;/span&gt;, _connection);
    _contactDataAdapter.InsertCommand &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;new&lt;/span&gt; OleDbCommand(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;@"
                INSERT INTO Contact(surname, firstname, city, address, mobilephone, homephone)
                VALUES (@surname, @firstname, @city, @address, @mobilephone, @homephone)"&lt;/span&gt;, _connection);
     _contactDataAdapter.InsertCommand.Parameters.Add(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"@surname"&lt;/span&gt;, OleDbType.VarChar, 50, &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"surname"&lt;/span&gt;);
    _contactDataAdapter.InsertCommand.Parameters.Add(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"@firstname"&lt;/span&gt;, OleDbType.VarChar, 50, &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"firstname"&lt;/span&gt;);
    _contactDataAdapter.InsertCommand.Parameters.Add(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"@city"&lt;/span&gt;, OleDbType.VarChar, 50, &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"city"&lt;/span&gt;);
    _contactDataAdapter.InsertCommand.Parameters.Add(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"@address"&lt;/span&gt;, OleDbType.VarChar, 50, &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"address"&lt;/span&gt;);
    _contactDataAdapter.InsertCommand.Parameters.Add(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"@mobilephone"&lt;/span&gt;, OleDbType.VarChar, 10, &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"mobilephone"&lt;/span&gt;);
    _contactDataAdapter.InsertCommand.Parameters.Add(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"@homephone"&lt;/span&gt;, OleDbType.VarChar, 10, &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"homephone"&lt;/span&gt;);
    _contactDataAdapter.Fill(_contactDataset, &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Contact"&lt;/span&gt;);
    _connection.Close();
}

&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;static&lt;/span&gt; ContactRepository GetContactRepository()
{
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;return&lt;/span&gt; _instance;
 }

&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; DataTable GetDataSource()
{
    &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;return&lt;/span&gt; _contactDataset.Tables[&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Contact"&lt;/span&gt;];
}

&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;void&lt;/span&gt; Insert(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;string&lt;/span&gt; surname, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;string&lt;/span&gt; firstname, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;string&lt;/span&gt; city, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;string&lt;/span&gt; address, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;string&lt;/span&gt; mobilephone, &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;string&lt;/span&gt; homephone)
{
        &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; (_connection.State == ConnectionState.Closed)
            _connection.Open();

        _contactDataAdapter.InsertCommand.Parameters[&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"@surname"&lt;/span&gt;].Value &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; surname;
        _contactDataAdapter.InsertCommand.Parameters[&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"@firstname"&lt;/span&gt;].Value &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; firstname;
        _contactDataAdapter.InsertCommand.Parameters[&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"@city"&lt;/span&gt;].Value &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; city;
        _contactDataAdapter.InsertCommand.Parameters[&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"@address"&lt;/span&gt;].Value &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; address;
        _contactDataAdapter.InsertCommand.Parameters[&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"@mobilephone"&lt;/span&gt;].Value &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; mobilephone;
        _contactDataAdapter.InsertCommand.Parameters[&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"@homephone"&lt;/span&gt;].Value &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; homephone;
        _contactDataAdapter.InsertCommand.ExecuteNonQuery();
        _connection.Close();
}&lt;/span&gt;&lt;/pre&gt;Έχω δηλαδή τον constructor, την&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt; GetContactRepository()&lt;/span&gt;που επιστρέφει το Instance, την GetDataSource() που γίνεται bind με ένα Datagrid και την Insert που καταχωρεί μία εγγραφή στη βάση.&lt;br&gt;&lt;br&gt;Τέλος, όσο για το BindingSource, το ψάχνω για να δω ακριβώς πως δουλεύει, οπότε χρειάζομαι και λίγη βοήθεια &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;.</description></item><item><title>Απ: Refresh του Grid της Parent form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/58638.aspx</link><pubDate>Wed, 12 May 2010 01:15:49 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:58638</guid><dc:creator>infoCENTER</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/58638.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=58638</wfw:commentRss><description>&lt;P&gt;Δεν μπορώ να πω ότι κατάλαβα ακριβώς τι με ρωτάς αλλά θα κάνω μία προσπάθεια να εξηγήσω. Αναφέρεσαι στην τρίτη λύση που έγραψα οπότε θα περιγράψω τι θέλω να πω. &lt;/P&gt;
&lt;P&gt;Σχεδόν όλες οι εφαρμογές δημιουργούνται για να διαχειριστιούν δεδομένα κάποια μορφής, που συνήθως βρίσκονται σε μία εξωτερική πηγή π.χ σε μία βάση δεδομένων. Όταν λοιπόν γράφεις των κώδικα για να διαβάσεις τα δεδομένα από την εξωτερική πηγή θα πρέπει κάπου μέσα στην εφαρμογή σου να τα κρατήσεις για να τα δείξεις στον χρήση. Συνήθως τα κρατάς στο επίπεδο της φόρμας. Δηλαδή ο κώδικας ανάκτησης των δεδομένων,&amp;nbsp;κράτησης σε μία μεταβλητή και εμφάνισης&amp;nbsp;είναι στην ίδια κλάση, δηλαδή&amp;nbsp;της φόρμας που τα εμφανίζει. &lt;/P&gt;
&lt;P&gt;Ίσως να έχεις ακούσει τον όρο DAL (Data Access Layer). Ουσιαστικά ο όρος αυτός αναφέρεται στον κώδικα ανάκτησης των δεδομένων αλλά και αποθήκευσης, όμως εδώ θα μιλήσουμε μόνο για την ανάκτηση. Αν το έχεις ακούσει τότε λογικά θα έχεις δημιουργήσει μία κλάση στην οποία έχεις βάλει τον κώδικα που θα διαβάζει τα δεδομένα από την βάση. Και θα το έχεις κάνει γιατί ίσως να σου άρεσε η ιδέα να ξεχωρίσεις τον κώδικα που εμφανίζει δεδομένα στον χρήστη με αυτό που τα διαβάζει από μία εξωτερική πηγή είτε γιατί σου είναι πιο εύκολη η διαχείριση και η συντήρηση του κώδικά σου. Όπως και να έχει χωρίς να το ξέρεις ακολούθησες μέχρι ένα σημείο μία από τις οδηγίες του αντικειμενοστραφούς προγραμματισμού. Κάθε κλάση θα πρέπει να κάνει ένα πράγμα και μόνο ένα πράγμα. Οπότε είχες μία κλάση που περιείχε κώδικα για την εμφάνιση του UI, κώδικα για την διαχείριση των δεδομένων και κώδικα για την ανάκτηση των δεδομένων. Με το παραπάνω βήμα έβγαλες των κώδικα ανάκτησης των δεδομένων από την κλάση αυτή. &lt;/P&gt;
&lt;P&gt;Οπότε στην αρχική κλάση μας μένει ο κώδικας εμφάνισης του UI στον χρήστη και της διαχείρισης των δεδομένων. Η τρίτη λύση που πρότεινα ουσιαστικά βγάζει από την κλάση αυτή των συγκεκριμένο κώδικα διαχείρησης και τον βάζει σε μία άλλη. Ουσιαστικά μιλάω για Data Models και για Buziness Models. Οπότε ναι αναφέρομαι στα δεδομένα σου που πέρνεις από την βάση.&lt;/P&gt;
&lt;P&gt;To Singleton Pattern όμως δεν έχει να κάνει με τα δεδομένα αλλά με τον τρόπο που θα δημιουργήσεις ένα instance μίας οποιασδήποτε κλάσης και πως αυτό το instance θα μπορεί να γίνει access από οποιοδήποτε σημείο του κώδικά σου χωρίς να έχεις reference στο instance αυτό.&amp;nbsp;Πληροφορίες μπορείς να βρεις στο internet για αυτό ή στο ελληνικό site &lt;A href="http://www.designpatterns.gr/singleton"&gt;http://www.designpatterns.gr/singleton&lt;/A&gt;&amp;nbsp;(Μετάφραση Σόλο.... γκρρρρρ........). Επειδή λοιπόν κάθε φόρμα που θα φτιάξεις στην εφαρμογή σου θα έχει να κάνει κάποια εργασία με τα δεδομένα από την βάση, θα πρέπει με κάποιο τρόπο να έχεις πρόσβαση στην κλάση που κρατάει στα δεδομένα αυτά. Αυτό μπορεί να γίνει με δύο τρόπους. Είτε να περνάς ένα Reference σε κάθε φόρμα που θα εμφανίζεις, είτε με την χρήση του Pattern, χωρίς να περνάς reference να έχεις πρόσβαση στο instance που κρατάει τα δεδομένα. ΄&lt;/P&gt;
&lt;P&gt;Τώρα πάλι μπορεί να είμαι τελείος εκτός από αυτό που ρώτησες αλλά είχα λίγη ώρα και είπα να προσπαθήσω να απαντήσω. Αυτό όμως που μου προκαλεί εντύπωση είναι που δεν με ρώτησες για το BindingSource που σου είπα στο τέλος... Εκτός και αν το βρήκες, γιατί πίστεψέ με θα σε γλυτώσει από πάρα πολύ χρόνο, φαντάσου η φόρμα αυτή αντί 6 πεδία να είχε 25... &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Refresh του Grid της Parent form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/58616.aspx</link><pubDate>Mon, 10 May 2010 21:41:36 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:58616</guid><dc:creator>pap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/58616.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=58616</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;infoCENTER:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Το γιατί βγάζει το μήνυμα λάθους αυτό δεν μπορώ να σου το πω. Επειδή όμως ζήτησες άλλες εκδοχές γράφω.&lt;/p&gt;
&lt;p&gt;1. Θα μπορούσες να περνάς την φόρμα που κάλεσε την Insert σαν παράμετρο στον constructor της Insert και από εκεί να καταχωρείς την εγγραφή όπως ήδη το κάνεις.&lt;/p&gt;
&lt;p&gt;2. Θα μπορούσες αντί της φόρμας να περνάς σαν παράμετρο το BindingSource που θα έχεις φτιάξει επάνω στην Main. Αν κατάλαβα καλά το Binding που έχεις κάνει είναι DataTable --&amp;gt;Grid. Θα μπορούσε να ήταν DataTable --&amp;gt; BindingSource --&amp;gt; Grid. Βασικά από την πρώτη προτιμώ την δεύτερη λύση. &lt;/p&gt;
&lt;p&gt;3. Θα μπορούσες να έχεις μία κλάση ή κλάσεις που να κρατάνε τα δεδομένα της εφαρμογής και οι οποίες θα γινόντουσαν Reference από όλες τις φόρμες σου. Αν τις έχεις φτιάξει και με singleton pattern τότε δεν θα χρειαζόταν&amp;nbsp;να περαστούν και σαν παράμετροι στα constructors των φορμών. Η λύση αυτή την θεωρώ ακόμα καλύτερη από την 2.&lt;/p&gt;
&lt;p&gt;Για τον κώδικα τώρα που είδα επέτρεψέ μου να σου κάνω μία μικρή παρατήρηση η οποία θα σε σώσει από πάρα πολύ χρόνο. Πρόσεξα ότι στην φόρμα σου αναφέρεσαι σε κάθε control για να πάρεις την τιμή του. Με την χρήση ενός BindingSource αυτό δεν θα χρειαζόταν να το κάνεις. Το κάνει αυτόματα το BindingSource και ενημερώνει το αντίστοιχο DataRow που του έχεις περάσει.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;&lt;br&gt;Ευχαριστώ για τη βοήθειά σας όλους. Με το Singleton pattern εννοείς τις κλάσεις που έχουν να κάνουν με τα δεδομένα της βάσης (Contacts);&lt;br&gt;</description></item><item><title>Re: Απ: Refresh του Grid της Parent form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/58544.aspx</link><pubDate>Wed, 05 May 2010 07:32:55 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:58544</guid><dc:creator>Aggelos Biboudis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/58544.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=58544</wfw:commentRss><description>Για το μήνυμα λάθους το μόνο που μου λέει είναι ότι δεν έχει γίνει allocate το αντικείμενο. Ως εναλλακτική κάτι γρήγορο που σκέφτομαι είναι να περάσεις από τον constructor της Form ένα Action το οποίο θα λέγεται OnSuccessContinuation, και θα κάνει this.Refresh ξέρω γω. Οπότε όταν το save σου γίνει επιτυχώς, κάνεις invoke to Action και είσαι οκ.&lt;br&gt;&lt;br&gt;Αν κατάλαβα καλά τι ζήτησες, αν όχι, post.Dispose();&lt;br&gt;&lt;br&gt;&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-2.gif" alt="Big Smile" /&gt; &lt;br&gt;</description></item><item><title>Απ: Refresh του Grid της Parent form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/58507.aspx</link><pubDate>Tue, 04 May 2010 04:17:32 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:58507</guid><dc:creator>Τάσκος Γιώργος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/58507.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=58507</wfw:commentRss><description>&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-21.gif" alt="Yes" /&gt; +++</description></item><item><title>Απ: Refresh του Grid της Parent form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/58504.aspx</link><pubDate>Tue, 04 May 2010 02:51:31 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:58504</guid><dc:creator>infoCENTER</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/58504.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=58504</wfw:commentRss><description>&lt;P&gt;Το γιατί βγάζει το μήνυμα λάθους αυτό δεν μπορώ να σου το πω. Επειδή όμως ζήτησες άλλες εκδοχές γράφω.&lt;/P&gt;
&lt;P&gt;1. Θα μπορούσες να περνάς την φόρμα που κάλεσε την Insert σαν παράμετρο στον constructor της Insert και από εκεί να καταχωρείς την εγγραφή όπως ήδη το κάνεις.&lt;/P&gt;
&lt;P&gt;2. Θα μπορούσες αντί της φόρμας να περνάς σαν παράμετρο το BindingSource που θα έχεις φτιάξει επάνω στην Main. Αν κατάλαβα καλά το Binding που έχεις κάνει είναι DataTable --&amp;gt;Grid. Θα μπορούσε να ήταν DataTable --&amp;gt; BindingSource --&amp;gt; Grid. Βασικά από την πρώτη προτιμώ την δεύτερη λύση. &lt;/P&gt;
&lt;P&gt;3. Θα μπορούσες να έχεις μία κλάση ή κλάσεις που να κρατάνε τα δεδομένα της εφαρμογής και οι οποίες θα γινόντουσαν Reference από όλες τις φόρμες σου. Αν τις έχεις φτιάξει και με singleton pattern τότε δεν θα χρειαζόταν&amp;nbsp;να περαστούν και σαν παράμετροι στα constructors των φορμών. Η λύση αυτή την θεωρώ ακόμα καλύτερη από την 2.&lt;/P&gt;
&lt;P&gt;Για τον κώδικα τώρα που είδα επέτρεψέ μου να σου κάνω μία μικρή παρατήρηση η οποία θα σε σώσει από πάρα πολύ χρόνο. Πρόσεξα ότι στην φόρμα σου αναφέρεσαι σε κάθε control για να πάρεις την τιμή του. Με την χρήση ενός BindingSource αυτό δεν θα χρειαζόταν να το κάνεις. Το κάνει αυτόματα το BindingSource και ενημερώνει το αντίστοιχο DataRow που του έχεις περάσει.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Refresh του Grid της Parent form</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/58498.aspx</link><pubDate>Tue, 04 May 2010 00:29:56 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:58498</guid><dc:creator>pap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/58498.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=58498</wfw:commentRss><description>Έχω ένα προβληματάκι...&lt;br&gt;&lt;br&gt;Εχω μια Main (parent) φόρμα &lt;b&gt;fMain &lt;/b&gt;και θέλω να εισάγω μια καινούργια εγγραφή από μια άλλη φόρμα π.χ. &lt;b&gt;fInsert&lt;/b&gt;. Η τελευταία είναι modeless form και στην ουσία ο σκοπός μου είναι με το που πατήσει Save ο χρήστης να εισαχθεί η εγγραφή στο grid της fMain και να φανεί την ίδια στιγμή που πάτησε Save.&lt;br&gt;&lt;br&gt;&lt;img src="http://i40.tinypic.com/tzhjs.jpg"&gt;&lt;br&gt;Αυτό που έχω γράψει στην fInsert είναι το εξής:&lt;br&gt;&lt;pre&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ContactRepository contactRepository &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;new&lt;/span&gt; ContactRepository();
DataTable dtContacts &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;null&lt;/span&gt;;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;string&lt;/span&gt; surname &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;""&lt;/span&gt;;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;string&lt;/span&gt; firstname &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;""&lt;/span&gt;;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;string&lt;/span&gt; city &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;""&lt;/span&gt;;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;string&lt;/span&gt; address &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;""&lt;/span&gt;;&lt;br&gt;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;string&lt;/span&gt; mobilephone &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;""&lt;/span&gt;;
&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;string&lt;/span&gt; homephone &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;""&lt;/span&gt;;

dtContacts &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; (((&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;this&lt;/span&gt;.Owner &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;as&lt;/span&gt; fMain).Controls[&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"ucContactsGrid"&lt;/span&gt;].Controls[&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"gridControl"&lt;/span&gt;] &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;as&lt;/span&gt; DevExpress.XtraGrid.GridControl).DataSource &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;as&lt;/span&gt; DataTable);

surname &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; textEditSurname.Text.Trim();
firstname &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; textEditFirstname.Text.Trim();
city &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; textEditCity.Text.Trim();
address &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; textEditAddress.Text.Trim();
mobilephone &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; textEditMobilephone.Text.Trim();
homephone &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; textEditHomephone.Text.Trim();

&lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;// εισαγωγή στο Grid για να φανεί η εισαγωγή&lt;/span&gt;
dtContacts.Rows.Add(&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;new&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;object&lt;/span&gt;[] { surname, firstname, city, address, mobilephone, homephone });

&lt;span style="color:Green;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;// εισαγωγή στη database&lt;/span&gt;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;
contactRepository.Insert(textEditSurname.Text, textEditFirstname.Text, textEditCity.Text,
      textEditAddress.Text, textEditMobilephone.Text, textEditHomephone.Text);&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;/pre&gt;H προτελευταία εντολή μου πετάει NullReferenceException. Καμμιά λύση/άλλη εκδοχή;&lt;br&gt;</description></item></channel></rss>