【问题标题】:Auto show change in datagridview在datagridview中自动显示更改
【发布时间】:2017-10-09 20:52:32
【问题描述】:

我用两个 froms(form1,form2) 编写了一个程序。Form1 有 datagridview,而 Form2 我用它将数据传递到数据库(我在 datagridview 中看到了它们)。我希望当我按下 form2 中的保存按钮时,同时在 form1 中看到 datagridview 中的值而没有刷新按钮(就像现在一样)。

以下代码为保存按钮:

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

【问题讨论】:

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


    【解决方案1】:

    我不知道我是否理解您的问题,但我们假设如果您点击保存按钮,您在 Form 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 共享给其他表单。 在你之后:

    公共部分类表格一:表格

    在您的表格 2 中 将此代码放入您的 Form_load

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

    再一次

    在你之后:

    public部分类Form 2:Form

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

    你的表格 1 样本

    Form1 frm = 新 Form1

    那么

    在这段代码之后:

    DialogResult dialog= MessageBox.Show("Saved","Saved",MessageBoxButtons.OK);

    frm.DataGridRefresher();//这段代码会刷新你的datagridview中的数据。

    如果我解释得不太好,请回复如果它起作用了抱歉。我只是在学习代码而不是他们的名字,也很抱歉我的英语语法我在这方面也不太好。

    【讨论】:

      【解决方案2】:

      这很简单,只要您在 Form1 和 Form2 之间有联系(即父子关系)。

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

      表格 2 - VB.NET:

      Public ParentFrm as Form1  
      

      C#:

      public Form1 ParentFrm;  
      

      Form 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()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-09
        • 2015-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-12
        • 1970-01-01
        相关资源
        最近更新 更多