数据网格视图中的自动显示更改

时间:2017-10-09 20:52:33

标签: c# mysql datagridview windows-forms-designer

我用两个froms(form1,form2)创建了一个programma.Form1有datagridview,而Form2我用它来将数据传递给数据库(我在datagridview中看到它们)。我想当我在form2中按下保存按钮时同时在form1中看到datagridview中的值而没有刷新butoon(就像现在一样)。

以下代码是保存按钮:

        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();
      }

    }

以下代码是刷新按钮:

        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);

2 个答案:

答案 0 :(得分:0)

我不知道我是否理解您的问题,但我们假设如果您点击保存按钮,您在表单2中输入的数据将显示在Form1的datagridview中。

这是表单1中的代码,它将在datagridview中显示数据吗?

 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);

所以试试这个。

在你的Form1中 复制此内容并粘贴

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);
       }

然后把这个         public System.Windows.Forms.DataGridView GridOgrenci; //此代码将允许Form 1将datagridview共享给其他表单。 在你之后:

公共部分课程表格1:表格

并在您的表格2中 把这段代码放在你的Form_load

frm = Application.OpenForms [“Form1”]为Form1; //这将允许您在form1中使用datagridview属性

再次

之后:

公共部分课程表格2:表格

声明,以便您可以在表单2中使用datagridview

我的表格1

Form1 frm = new Form1

然后

在此代码之后:

DialogResult对话框= MessageBox.Show(“已保存”,“已保存”,MessageBoxButtons.OK);

<强>把

frm.DataGridRefresher(); //此代码将刷新datagridview中的数据。

如果我的解释不太好,请回复一下是否有用。我只是在代码中学习而不是在他们的名字中学习,对不起我的英语语法也不是很好。

答案 1 :(得分:0)

这很简单,前提是您在Form1和Form2之间有连接(即父子关系)。

这样做的一种方法(经常被认定,但我认为它是最“性感”的方式,并经过多年的测试)如下:

表2 - VB.NET:

Public ParentFrm as Form1  

C#:

public Form1 ParentFrm;  

表单1 - 在其运行的实例中 - 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;

由于我们在Form2中设置了ParentFrm,你可以通过这种方式回传和调用Form1中的更新函数 - VB.NET:

ParentFrm.UpdateForm1FromDatabasePublicFunction()

C#:

ParentFrm.UpdateForm1FromDatabasePublicFunction()