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

 

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

Datagrid Refreshing

Îåêßíçóå áðü ôï ìÝëïò pap. Τελευταία δημοσίευση από το μέλος pap στις 26-09-2008, 13:06. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  24-09-2008, 21:49 44861

    Datagrid Refreshing

    Καλησπέρα στα παιδιά.

    Θέλω να γίνεται refresh των data σε ένα datagrid που βρίσκεται σε ένα user control, χωρίς όμως να καλώ το event της φόρμας Activated() ή το event Enter του user control.
    Υπάρχει άλλος τρόπος;
  •  25-09-2008, 09:14 44865 σε απάντηση της 44861

    Απ: Datagrid Refreshing

    g.pap:
    Καλησπέρα στα παιδιά.

    Θέλω να γίνεται refresh των data σε ένα datagrid που βρίσκεται σε ένα user control, χωρίς όμως να καλώ το event της φόρμας Activated() ή το event Enter του user control.
    Υπάρχει άλλος τρόπος;

    Έτσι όπως έχεις κάνεις την ερώτηση, η απάντηση "Βάλε ένα button και όταν του γίνεται κλικ, να ανανεώνονται τα δεδομένα" πρέπει να είναι αρκετή. Είμαι όμως σίγουρος, ότι αυτό που ψάχνεις δεν είναι αυτό. Μήπως μπορείς να γίνει πιο συγκεκριμένος στο τι θέλεις να κάνεις, και έχεις προσπαθήσει να το υλοποιήσεις με τα παραπάνω events;

    Ένας timer θα μπορούσε περιοδικά να προκαλεί ένα event που θα ανανεώνει τα δεδομένα του control σου...

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  25-09-2008, 14:22 44876 σε απάντηση της 44865

    Απ: Datagrid Refreshing

    Ευχαριστώ για την απάντησή σου Γιώργο.

    Λοιπόν έχουμε και λέμε.

    1.) Έχω πχ. μία κλάση Contact, όπου κάνω set τα commands.

    public Contact()
    {
                selectCommand.CommandText = @"
    SELECT *
    FROM Contact";
                selectCommand.Connection = Database.Con;
                insertCommand.CommandText = @"
    INSERT INTO Contact(id, firstName, lastName, city)
    VALUES (@id, @firstName, @lastName, @city)";
                insertCommand.Connection = Database.Con;
                insertCommand.Parameters.Add("@id", OleDbType.Integer, 0, "id");
                insertCommand.Parameters.Add("@firstName", OleDbType.VarWChar, 0, "firstName");
                insertCommand.Parameters.Add("@lastName", OleDbType.VarWChar, 0, "lastName");
                insertCommand.Parameters.Add("@city", OleDbType.VarWChar, 0, "city");
                da.SelectCommand = selectCommand;
                da.InsertCommand = insertCommand;
                da.Fill(ds, "Contact");
    }

    ...

    /// <summary>
    /// Επιστρέφει ένα DataTable Contact.
    /// </summary>
    /// <returns></returns>
    public DataTable GetDataSource() {
        return ds.Tables["Contact"];
    }

    // update των data
    public void UpdateDataSet() {
                selectCommand.CommandText = @"
    SELECT *
    FROM Contact";
                da.SelectCommand = selectCommand;
                da.Fill(ds, "Contact");
    }

    // μέθοδος εισαγωγής data στη βάση
    public void Insert(Int16 id, string fName, string lName, string city) {
                insertCommand.Parameters["@id"].Value = id;
                insertCommand.Parameters["@firstName"].Value = fName;
                insertCommand.Parameters["@lastName"].Value = lName;
                insertCommand.Parameters["@city"].Value = city;
                insertCommand.ExecuteNonQuery();
    }

    2.) Έχω και ένα UserControl, το ucContact που περιέχει πχ. ένα gridView (devExpress):

    public ucContact()
    {
        InitializeComponent();
        gridView.DataSource = contact.GetDataSource();
    }

    3.) Την κύρια φόρμα, την fMain όπου κάνω τα εξής:

    // event που εμφανίζει τη φόρμα εισαγωγής
    private void btnInsertContact_Click(object sender, System.EventArgs e) {
                using ( fInsert f = new fInsert() ) {
                    f.ShowDialog();
                }
    }

    // event fMain_Activated()
    private void fMain_Activated(object sender, System.EventArgs e) {
                contact.UpdateDataSet();
            }

    4.) Και τέλος την fInsert, όπου κάνω insert τα data:

    private void btnSave_Click(object sender, System.EventArgs e) {
                contact.Insert(Convert.ToInt16(textBox1.Text), textBox2.Text, textBox3.Text, textBox4.Text);
                this.Close();
    }


    Η ερώτηση μου είναι: Πως θα κάνω update το gridView του UserControl με το που πατήσω αποθήκευση/εισαγωγή στη φόρμα fInsert και πάω πίσω στην fMain, χωρίς να χρησιμοποιήσω το event fMain_Activated()???


  •  25-09-2008, 14:41 44877 σε απάντηση της 44876

    Απ: Datagrid Refreshing

    Xρησιμοποιησε το DialogResult της fInsert form και κανε update to user control αν χρειάζεται.


    FInsert

    //Constructor
    public fInsert()
    {
    InitializeComponent();

    DialogResult = DialogResult.Cancel; //set as default

    }


    private void btnSave_Click(object sender, System.EventArgs e) {
    try
    {
    contact.Insert(Convert.ToInt16(textBox1.Text), textBox2.Text, textBox3.Text, textBox4.Text);
    DialogResult = DialogResult.OK; //η βάση ενημερώθηκε επιτυχώς
    this.Close();
    }
    catch{Exception e}
    {
    ...
    DialogResult = DialogResult.Cancel; //περιττό αν εχεις θέση τιμή στον constructor αλλά πολυ πιο ευανάγνωστο,συντηρήσιμο
    }
    }

    On main form

    using (fInsert f = new fInsert())
    {
    if (f.ShowDialog() == DialogResult.OK)//επιτυχής ενημέρωση της βάσης -->συγχρόνισε το uc
    {
    contact.UpdateDataSet();
    }
    }


    Ειναι κώδικας χωρις VS  αλλά σου δείχνει την ιδέα


    Εναλλακτικα όρισε ενα custom Modal form finsert στην οποία δήλωσε ένα event kai πρόσθεσε στην main form κάποιον handler gia to event αυτό που θα προκαλεί το update του user control.



  •  25-09-2008, 14:49 44878 σε απάντηση της 44877

    Απ: Datagrid Refreshing

    Το update των data το κάνω μέσα από την κλάση Contact με την κλίση της UpdateDataSet() που έγραψα.
    Το μόνο event που έχει το UserControl ucContact είναι το Enter(), το οποίο όμως κάνει update τα data αφού κάνω κάποιο κλικ ας πούμε.

    Τι είναι το custom Modal form δεν κατάλαβα. Και τι event να δηλώσω εκεί μέσα;
    Μπορείς αν είναι δυνατόν, να μου δώσεις ένα παράδειγμα με κώδικα;

    Ευχαριστώ για την απάντησή σου.
  •  26-09-2008, 13:06 44894 σε απάντηση της 44877

    Απ: Datagrid Refreshing

    Λοιπόν αυτό έκανα μόλις πριν λίγο.

    Ακριβώς το ίδιο! Δηλαδή αμέσως με το που κλείνει η φόρμα fInsert() έγραψα

    contact.UpdateDataSet()

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