2016-09-08 2 views
0

Ich habe 2 Formulare erstellt. 1 "Hauptformular" und ein ähnliches "Modal-Fenster" für Daten einfügen.Refresh Form1 dataGrid von einem anderen Formular C# Winform

auf Form1, ich habe diesen Code:

public void CargarDataGrid_Estudiantes() 
    { 
     MySqlConnection con = new MySqlConnection(conString); 
     con.Open(); 
     MySqlCommand cmd = new MySqlCommand("showStudent", con); 
     cmd.CommandType = CommandType.StoredProcedure; 

     cmd.Parameters.AddWithValue("@pid_School", Login.ID_SCHOOL_LOGIN); 

     MySqlDataAdapter DataAdapter = new MySqlDataAdapter(); 
     DataTable DataTable = new DataTable(); 

     DataAdapter.SelectCommand = cmd; 
     DataAdapter.Fill(DataTable); 

     dataGrid_Estudiantes.DataSource = DataTable; 
     dataGrid_Estudiantes.Columns[0].HeaderCell.Value = "id_Student"; 
     dataGrid_Estudiantes.Columns[0].Visible = false; 
     Bla bla bla bla bla........................ 
    } 

Ich habe versucht, mein Raster mit diesem Code auf Benutzersteuerelement von form2 "Schließen-Button" zu aktualisieren:

private void btn_cerrarModal_Click(object sender, EventArgs e) 
    { 
     Pantallas.Estudiantes estu = new Estudiantes(); 
     estu.CargarDataGrid_Estudiantes(); 

     ((Modal)this.TopLevelControl).Close(); 
    } 

Aber dosnt Arbeit. Was mache ich falsch?

Danke.

+1

das * Gitter * doesnt aufgefrischt werden müssen, die * Daten * der Fall ist. – Plutonix

Antwort

0

Sie können keine neue Instanz von Pantallas.Estudiantes (in Form2) erstellen und erwarten, auf eine andere Instanz zugreifen (die "ursprüngliche" Instanz von form1/Pantallas.Estudiantes).

den DialogResult Wert von Form 2 verwenden, um festzustellen, ob es eine Notwendigkeit Form1 aufzufrischen ist:

Aufruf Form2vonForm1:

private void button1_Click(object sender, EventArgs e) 
     { 
      Form2 f2 = new Form2(); 
      if (f2.ShowDialog() == DialogResult.OK) 

      { 
       // refresh form 
       CargarDataGrid_Estudiantes(); 
      } 
     } 

Benutzer drückt Schließen-Schaltfläche auf form2:

private void button1_Click(object sender, EventArgs e) 
     { 
      this.DialogResult = DialogResult.OK; 
      this.Close(); 
     } 

in einer anderen Taste auf Form2 Sie dieses Stück Code tun kann, wenn es einen Fall gibt, die Sie nicht wollen, Form1 aktualisieren:

private void button2_Click(object sender, EventArgs e) 
      { 
       this.DialogResult = DialogResult.Cancel; 
       this.Close(); 
      } 
Verwandte Themen