2017-10-09 6 views
0

J'ai créé un programme avec deux froms (form1, form2) .Form1 a le datagridview et le Form2 je l'utilise pour transmettre les données à la base de données (que j'ai vu dans datagridview). Je veux quand j'appuie sur le bouton de sauvegarde dans le form2 le même temps a vu les valeurs dans le datagridview à la forme1 avec hors refresh de butoon (comme cela est maintenant).Auto show change dans datagridview

Le code suivant est le bouton d'enregistrement:

 string cdata = "Server=127.0.0.1;Database=liveriservis;Port=3306;Uid=root;Pwd=axmn1336;"; 
     MySqlConnection con = new MySqlConnection(cdata);   
     Querypelatis = "insert into liveriservis.pelatis(Όνομα,Επώνυμο,Κινητό,Σταθερό,date) values('" + this.name.Text + "','" + this.eponimo.Text + "','" + this.kinito.Text + "','" + this.stathero.Text + "','" + this.dateTimePicker2.Text + "');";    
     Queryteliko = "insert into liveriservis.teliko(Date,Όνομα,Επώνυμο,Σταθερό,Κινητό,ΠρόβλημαPc,ΠρόβλημαPc1,ΜοντέλοLaptop,ΠρόβλημαLaptop,ΠρόβλημαLaptop1,ΕξαρτήματαLaptop,ΜοντέλοΚινητό,ΠρόβλημαΚινητό,ΠρόβλημαΚινητό1,Αρίθμηση,Τιμή)values ('" + this.dateTimePicker2.Text + "','" + this.name.Text + "','" + this.eponimo.Text + "','" + this.stathero.Text + "','" + this.kinito.Text + "','" + this.problimapc.Text + "','" + strpc + "','" + this.modelolaptop.Text + "','" + this.problimalaptop.Text + "','" + strlaptop + "','" + strlaptop1 + "','" + modelo + "','" + this.problimakinito.Text + "','" + strkinito + "','" + this.arithisi.Text + "','" + this.timi.Text + "') ;"; 
     Queryolokliromeno = "insert into liveriservis.olokliromeno(Date,Όνομα,Επώνυμο,Σταθερό,Κινητό,ΠρόβλημαPc,ΠρόβλημαPc1,ΜοντέλοLaptop,ΠρόβλημαLaptop,ΠρόβλημαLaptop1,ΕξαρτήματαLaptop,ΜοντέλοΚινητό,ΠρόβλημαΚινητό,ΠρόβλημαΚινητό1,Αρίθμηση,Τιμή)values ('" + this.dateTimePicker2.Text + "','" + this.name.Text + "','" + this.eponimo.Text + "','" + this.stathero.Text + "','" + this.kinito.Text + "','" + this.problimapc.Text + "','" + strpc + "','" + this.modelolaptop.Text + "','" + this.problimalaptop.Text + "','" + strlaptop + "','" + strlaptop1 + "','" + modelo + "','" + this.problimakinito.Text + "','" + strkinito + "','" + this.arithisi.Text + "','" + this.timi.Text + "') ;"; 


     MySqlCommand cmpelatis = new MySqlCommand(Querypelatis, con); 
     MySqlCommand cmteliko = new MySqlCommand(Queryteliko,con); 
     MySqlCommand cmolokliromeno = new MySqlCommand(Queryolokliromeno, con); 

     MySqlDataReader myReader; 
     try 
     { 
      con.Open(); 
      myReader = cmpelatis.ExecuteReader(); 
      con.Close(); 
      con.Open(); 
      myReader = cmteliko.ExecuteReader(); 
      con.Close();    
      con.Open(); 
      myReader = cmolokliromeno.ExecuteReader(); 

      DialogResult dialog= MessageBox.Show("Saved","Saved",MessageBoxButtons.OK); 
      if (dialog == DialogResult.OK) { this.Close(); } 
      //else if (dialog == DialogResult.No) { e.Cancel = true; } 
      while (myReader.Read()) 
      { 
       // Application.Exit(); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
      // Application.Exit(); 
     } 

    } 

Et le code suivant est le bouton d'actualisation:

 string cdata = "Server=127.0.0.1;Database=liveriservis;Port=3306;Uid=root;Pwd=axmn1336;"; 
     condata = new MySqlConnection(cdata); 
     cmgrid = new MySqlCommand("select * from liveriservis.teliko", condata); 

     sda = new MySqlDataAdapter(); 
     sda.SelectCommand = cmgrid; 
     dset = new DataTable(); 
     sda.Fill(dset); 
     BindingSource bSource = new BindingSource(); 
     bSource.DataSource = dset; 
     dataGridView1.DataSource = bSource; 

     sda.Update(dset); 

Répondre

0

je ne sais pas si je comprends votre problème, mais laisse supposer simplement que si vous va appuyer sur le bouton de sauvegarde les données que vous avez entrées dans le formulaire 2 s'afficheront dans datagridview dans Form1.

est-ce le code dans votre formulaire 1 qui affichera les données dans votre datagridview droit?

string cdata = "Server=127.0.0.1;Database=liveriservis;Port=3306;Uid=root;Pwd=axmn1336;"; 
    condata = new MySqlConnection(cdata); 
    cmgrid = new MySqlCommand("select * from liveriservis.teliko", condata); 

    sda = new MySqlDataAdapter(); 
    sda.SelectCommand = cmgrid; 
    dset = new DataTable(); 
    sda.Fill(dset); 
    BindingSource bSource = new BindingSource(); 
    bSource.DataSource = dset; 
    dataGridView1.DataSource = bSource; 

    sda.Update(dset); 

alors essayez ceci.

dans votre Form1
copie celui-ci et coller

public void DataGridRefresher() 
    { 
    condata = new MySqlConnection(cdata); 
    cmgrid = new MySqlCommand("select * from liveriservis.teliko", condata); 
    sda = new MySqlDataAdapter(); 
    sda.SelectCommand = cmgrid; 
    dset = new DataTable(); 
    sda.Fill(dset); 
    BindingSource bSource = new BindingSource(); 
    bSource.DataSource = dset; 
    dataGridView1.DataSource = bSource; 

    sda.Update(dset); 
     } 

puis mettre celui-ci publique System.Windows.Forms.DataGridView GridOgrenci; // ce code permettra à la Formule 1 pour partager la vue datagridview à d'autres formes. après votre:

Formulaire de classe partielle publique 1: Formulaire

et dans votre formulaire 2 mettre ce code dans votre Form_load

FRM = Application.OpenForms [ "Form1"] comme Form1; // cela vous permettra d'utiliser la propriété datagridview dans votre form1

et encore

après votre:

Formulaire de classe partielle publique 2: Formulaire

mis

une déclaration afin que vous puissiez utiliser votre datagridview sous forme 2

échantillon i votre formulaire 1

Form1 FRM = new Form1

puis

après ce code:DialogResult dialog = MessageBox.Show ("Saved", "Saved", MessageBoxButtons.OK);

mis

FRM.DataGridRefresher(); // ce code actualisera les données dans votre dataagridview. Il suffit de répondre si cela a fonctionné désolé si je ne suis pas trop bon dans l'explication. Je suis en train d'apprendre dans le code pas dans leurs noms et désolé aussi pour ma grammaire anglaise im pas si bon dans ce domaine aussi.

0

Cela est simple, à condition que vous ayez une connexion (c'est-à-dire une relation parent-enfant) entre Form1 et Form2.

Une façon de le faire (souvent condemed, mais je compte le plus "sexy" manière et testé par année) est le suivant:

Formulaire 2 - VB.NET:

Public ParentFrm as Form1 

C#:

public Form1 ParentFrm; 

Formulaire 1-dans sa course par exemple - VB.NET:

Dim NewInstanceOfForm2 as New Form2 
NewInstanceOfForm2.ParentFrm = Me ' this is to ensure you can talk back to correct instance of parent form 

C#:

Form2 NewInstanceOfForm2 = new Form2(); 
NewInstanceOfForm2.ParentFrm = this; 

Depuis que nous avons mis la ParentFrm dans le Form2, vous pouvez communiquer en arrière et appeler la fonction de mise à jour Form1 cette façon - VB.NET:

ParentFrm.UpdateForm1FromDatabasePublicFunction() 

C#:

ParentFrm.UpdateForm1FromDatabasePublicFunction()