在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview

时间:2022-10-17 00:01:04
这是我现有代码
//定义一个insert方法,在下面的BUtton调用
 public int Insert(string code, string mei, string counter, string record_shsa, string record_koushsa, string record_sacusc, string record_ksnc)
        {
            OracleConnection conn = new OracleConnection(@"Data Source= O10G;User ID=aws;Password=aws");
            conn.Open();
            string sql = "insert into T_SHIIRESAKIMASTER values (:code2,:mei,:counter,:record_shsa,:record_koushsa,:record_sacusc,:record_ksnc)";
            OracleCommand cmd = new OracleCommand(sql, conn);

            OracleParameter parn = new OracleParameter(":code2", code);
            cmd.Parameters.Add(parn);

            OracleParameter parp = new OracleParameter(":mei", mei);
            cmd.Parameters.Add(parp);

            OracleParameter part = new OracleParameter(":counter", counter);
            cmd.Parameters.Add(part);

            OracleParameter parm = new OracleParameter(":record_shsa", record_shsa);
            cmd.Parameters.Add(parm);

            OracleParameter pare = new OracleParameter(":record_koushsa", record_koushsa);
            cmd.Parameters.Add(pare);

            OracleParameter parr = new OracleParameter(":record_sacusc", record_sacusc);
            cmd.Parameters.Add(parr);

            OracleParameter parc = new OracleParameter(":record_ksnc", record_ksnc);
            cmd.Parameters.Add(parc);

            int result = cmd.ExecuteNonQuery();
            conn.Close();
            cmd.Dispose();
            return result;
        }
添加按钮BUtton代码
   private void button1_Click(object sender, EventArgs e)
        {

            Insert(txtShiiresakiMei2.Text, textSHIIRESAKICODE2.Text, "0", System.Net.Dns.GetHostName(), System.Net.Dns.GetHostName(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
           // insert into 表 (列1,列2) values ('" + ds.Tables[0].Rows[i][0].ToString() + "','" + ds.Tables[0].Rows[i][1].ToString() + "')
            
            MessageBox.Show(" 顧客名前:'" + textSHIIRESAKICODE2.Text + "' 顧客コート: '" + txtShiiresakiMei2.Text + "'添加する");
            Form1 f1 = new Form1();
            this.Close();

        }
问题 : 这是form2中,datagridview在form1中,点击form1中的添加按钮,弹出form2,在form2中进行真正的添加,在添加完成后,怎样自动刷新form1中的datagridview
求指导·····多谢!! 在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview

25 个解决方案

#1


2关闭了,就在1里刷

#2


f1公布 一个public接口,可以接受数据,比如数组,你组织好,调用一下,f1里面接收到然后添加

#3


定义个委托,在form1里实现,form2里调用委托刷新form1数据

#4


C# Delegate

#5


思路不对
怎么在form2里又show form1呢
直接在form1里
form2 fm2=new form2();
fm2.ShowDialog();//form1不关闭,也不用重新show
刷新dgv

#6


引用 4 楼 andywangguanxi 的回复:
C# Delegate

这样只是在form1中弹出form2,要在子窗体form2中点击添加按钮将数据添加到数据库,并自动关闭,自动刷新form1中的datagridview列表

#7


引用 1 楼 ima_zhan 的回复:
2关闭了,就在1里刷
在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview
能根据我写的代码,将你所说的大体一i写吗,我水平确实达不到, 在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview多谢了

#8


引用 2 楼 bdmh 的回复:
f1公布 一个public接口,可以接受数据,比如数组,你组织好,调用一下,f1里面接收到然后添加


在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview

 能根据我写的代码,将你所说的大体一i写吗,我水平确实达不到,多谢了 在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview

#9


引用 8 楼 doulou77 的回复:
Quote: 引用 2 楼 bdmh 的回复:

f1公布 一个public接口,可以接受数据,比如数组,你组织好,调用一下,f1里面接收到然后添加


在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview

 能根据我写的代码,将你所说的大体一i写吗,我水平确实达不到,多谢了 在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview


        private void btnAdd_Click(object sender, EventArgs e)
        {
            Form4 frm = new Form4();
            frm.callbackaddrow += AddRow;
            frm.Show();
        }

        private void AddRow(string s1, string s2)
        {
            //根据新添加的值,在此处添加到DataGridView
        }


public Form4()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if(InsertSQL())
            {
                callbackaddrow("新增行第一列值", "新增行第二列值");
            }
        }

        //数据库操作
        private bool InsertSQL()
        {
            // ****
            return true;
        }

#10


我不知道你是怎样将数据绑定到 datagridview 的。

不知道这样可以不?

在form1中,
定义共有泛型,用于保存从数据库查询到结果的集合:
public BindingList<T_SHIIRESAKIMASTER > lst  = new  BindingList<T_SHIIRESAKIMASTER >();

绑定到 datagridview
     datagridview.DataSource = lst  ;  


form2 时,
你只需在insert提交到数据库后,加入:
T_SHIIRESAKIMASTER tbrd = new T_SHIIRESAKIMASTER();
tbrd.code2   = code ;
......
form1.lst.Insert(0, tbrd);

datagridview 内容会自动刷新了。



    public class T_SHIIRESAKIMASTER
    {
        private string _code2 ;
        .....
        .....
        .....         
        ///<summary>
        /// 构造函数
        ///</summary>
        public T_SHIIRESAKIMASTER()
        {
        }
        ///<summary>
        ///
        ///</summary>
        public T_SHIIRESAKIMASTER
        (
           string code2 ,
        .....
        .....
        .....                    
        )
        {
            this._code2 = code2 ;
        .....
        .....
        .....         
        }

        #region 公共属性
        
        public string code2
        {
            get
            {
                return _code2;
            }
            set
            {
                _code2= value;
            }
        }
        .....
        .....
        .....                    
    }

#11


form1中:
dataGridView1的 modifiers设为public 
 private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.ShowDialog(this);  
        }
]

form2中:

 private void button1_Click(object sender, EventArgs e)
        {
            Form1 f1 = (Form1)this.Owner;
            f1.textBox1.Text = "aaaa";
             f1.dataGridView1.DataSource = ds.Tables[0].DefaultView ;
            this.Close();


        }

#12


引用 11 楼 wind_cloud2011 的回复:
form1中:
dataGridView1的 modifiers设为public 
 private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.ShowDialog(this);  
        }
]

form2中:

 private void button1_Click(object sender, EventArgs e)
        {
            Form1 f1 = (Form1)this.Owner;
            f1.textBox1.Text = "aaaa";
             f1.dataGridView1.DataSource = ds.Tables[0].DefaultView ;
            this.Close();


        }

我没有绑定数据源datasource,更新按钮是这样写的
 private void btnrefresh_Click(object sender, EventArgs e)
        {
            Form2 f = new Form2();
            f.ShowDialog();
           
            //Console.WriteLine(dataGridView1.CurrentCell.ColumnIndex);
            //textSHIIRESAKICODE.Text =""

            Update(textSHIIRESAKICODE1.Text, txtShiiresakiMei1.Text, System.Net.Dns.GetHostName(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
        }
datasource那里该怎样改?谢谢了,我代码写的这么不好,辛苦您了

#13


 在你更新数据库后:    Update(textSHIIRESAKICODE1.Text, txtShiiresakiMei1.Text, System.Net.Dns.GetHostName(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));


再通过查询,

              try
            {
                SqlConnection con = new SqlConnection("server =.;database=db_sql;uid=sa;pwd=123");
                DataSet ds = new DataSet();
                SqlDataAdapter adap = new SqlDataAdapter("select * from student", con);
                adap.Fill(ds);
                f1.dataGridView1.DataSource = ds.Tables[0].DefaultView;

             }
              catch 
              {
                 
              }

#14


http://bbs.csdn.net/topics/360140208

#15


这个问题之前刚见人问过,建议先学习一下窗体间传值,再实现这个轻而易举,这里有一个类似的问题 http://www.hellocsharp.com/ask/14.aspx

#16


看来lz也是刚学编程。和我当年一样为了这么个问题,纠结了好久啊。那会还没有csdn呢。

楼上的都是解决办法。
如果你在form1中打开了form2,并且使用了ShowDialog()方法的话,
那么在showdialog()后面就可以加入刷新grideview的代码了。

如果不是以上办法,那么使用委托就可以了,在form2实例化以后,传入一个委托的变量并且绑定方法。
在form2关闭时,调用委托的方法,在form1中刷新数据完成后,才会关闭form2.

#17


那会还没有csdn呢。《============准确的说是我没听说过csdn。

#18


引用 17 楼 mjp1234airen4385 的回复:
那会还没有csdn呢。《============准确的说是我没听说过csdn。


呵呵 免得 被喷是不 在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview

#19


不如说,那会还没有C#呢...

#20


引用 18 楼 zou433 的回复:
Quote: 引用 17 楼 mjp1234airen4385 的回复:

那会还没有csdn呢。《============准确的说是我没听说过csdn。


呵呵 免得 被喷是不 在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview


一个是我喜欢说话严谨一些,另外就是确实遇到过好几个喷子。
前段时间有几天回帖勤快了点,有人喷:到处都能遇见你,然后就。。。。。,此处省略若干字。


引用 19 楼 Z65443344 的回复:
不如说,那会还没有C#呢...


确实没有C#,使用delphi起家的。

#21


我也是先研究的delphi,不过那时还没入门,只会用别人现成的代码改改
而那个别人,也是个臭手,代码写的又臭又长,复制粘贴改来改去
而且经常出现不明所以的错误,删了重新来就又好使,简直崩溃了
现在那个破程序也还在用,但是阶段性的就会出现某个窗体再也不好使了的情况
正准备改造的时候全部推翻重来呢.

#22


http://pan.baidu.com/s/1ntJUZgd

我写了个 例子  你到 百度网盘下载一下把

#23


结贴:我确实是新手
先谢谢大家了~ 为造福后人,总结一下
我的解决方法如下,可能比较低级,但新手易理解
 在form2确认添加按钮下: DialogResult = DialogResult.OK;
在 form1 添加调至form2按钮下:if (f2.ShowDialog() == DialogResult.OK)

检索一遍
}
这样就OK了 在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview

#24


感谢!终于找到我会用的了

#25


同样的问题,很类似!

#1


2关闭了,就在1里刷

#2


f1公布 一个public接口,可以接受数据,比如数组,你组织好,调用一下,f1里面接收到然后添加

#3


定义个委托,在form1里实现,form2里调用委托刷新form1数据

#4


C# Delegate

#5


思路不对
怎么在form2里又show form1呢
直接在form1里
form2 fm2=new form2();
fm2.ShowDialog();//form1不关闭,也不用重新show
刷新dgv

#6


引用 4 楼 andywangguanxi 的回复:
C# Delegate

这样只是在form1中弹出form2,要在子窗体form2中点击添加按钮将数据添加到数据库,并自动关闭,自动刷新form1中的datagridview列表

#7


引用 1 楼 ima_zhan 的回复:
2关闭了,就在1里刷
在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview
能根据我写的代码,将你所说的大体一i写吗,我水平确实达不到, 在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview多谢了

#8


引用 2 楼 bdmh 的回复:
f1公布 一个public接口,可以接受数据,比如数组,你组织好,调用一下,f1里面接收到然后添加


在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview

 能根据我写的代码,将你所说的大体一i写吗,我水平确实达不到,多谢了 在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview

#9


引用 8 楼 doulou77 的回复:
Quote: 引用 2 楼 bdmh 的回复:

f1公布 一个public接口,可以接受数据,比如数组,你组织好,调用一下,f1里面接收到然后添加


在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview

 能根据我写的代码,将你所说的大体一i写吗,我水平确实达不到,多谢了 在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview


        private void btnAdd_Click(object sender, EventArgs e)
        {
            Form4 frm = new Form4();
            frm.callbackaddrow += AddRow;
            frm.Show();
        }

        private void AddRow(string s1, string s2)
        {
            //根据新添加的值,在此处添加到DataGridView
        }


public Form4()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if(InsertSQL())
            {
                callbackaddrow("新增行第一列值", "新增行第二列值");
            }
        }

        //数据库操作
        private bool InsertSQL()
        {
            // ****
            return true;
        }

#10


我不知道你是怎样将数据绑定到 datagridview 的。

不知道这样可以不?

在form1中,
定义共有泛型,用于保存从数据库查询到结果的集合:
public BindingList<T_SHIIRESAKIMASTER > lst  = new  BindingList<T_SHIIRESAKIMASTER >();

绑定到 datagridview
     datagridview.DataSource = lst  ;  


form2 时,
你只需在insert提交到数据库后,加入:
T_SHIIRESAKIMASTER tbrd = new T_SHIIRESAKIMASTER();
tbrd.code2   = code ;
......
form1.lst.Insert(0, tbrd);

datagridview 内容会自动刷新了。



    public class T_SHIIRESAKIMASTER
    {
        private string _code2 ;
        .....
        .....
        .....         
        ///<summary>
        /// 构造函数
        ///</summary>
        public T_SHIIRESAKIMASTER()
        {
        }
        ///<summary>
        ///
        ///</summary>
        public T_SHIIRESAKIMASTER
        (
           string code2 ,
        .....
        .....
        .....                    
        )
        {
            this._code2 = code2 ;
        .....
        .....
        .....         
        }

        #region 公共属性
        
        public string code2
        {
            get
            {
                return _code2;
            }
            set
            {
                _code2= value;
            }
        }
        .....
        .....
        .....                    
    }

#11


form1中:
dataGridView1的 modifiers设为public 
 private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.ShowDialog(this);  
        }
]

form2中:

 private void button1_Click(object sender, EventArgs e)
        {
            Form1 f1 = (Form1)this.Owner;
            f1.textBox1.Text = "aaaa";
             f1.dataGridView1.DataSource = ds.Tables[0].DefaultView ;
            this.Close();


        }

#12


引用 11 楼 wind_cloud2011 的回复:
form1中:
dataGridView1的 modifiers设为public 
 private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.ShowDialog(this);  
        }
]

form2中:

 private void button1_Click(object sender, EventArgs e)
        {
            Form1 f1 = (Form1)this.Owner;
            f1.textBox1.Text = "aaaa";
             f1.dataGridView1.DataSource = ds.Tables[0].DefaultView ;
            this.Close();


        }

我没有绑定数据源datasource,更新按钮是这样写的
 private void btnrefresh_Click(object sender, EventArgs e)
        {
            Form2 f = new Form2();
            f.ShowDialog();
           
            //Console.WriteLine(dataGridView1.CurrentCell.ColumnIndex);
            //textSHIIRESAKICODE.Text =""

            Update(textSHIIRESAKICODE1.Text, txtShiiresakiMei1.Text, System.Net.Dns.GetHostName(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
        }
datasource那里该怎样改?谢谢了,我代码写的这么不好,辛苦您了

#13


 在你更新数据库后:    Update(textSHIIRESAKICODE1.Text, txtShiiresakiMei1.Text, System.Net.Dns.GetHostName(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));


再通过查询,

              try
            {
                SqlConnection con = new SqlConnection("server =.;database=db_sql;uid=sa;pwd=123");
                DataSet ds = new DataSet();
                SqlDataAdapter adap = new SqlDataAdapter("select * from student", con);
                adap.Fill(ds);
                f1.dataGridView1.DataSource = ds.Tables[0].DefaultView;

             }
              catch 
              {
                 
              }

#14


http://bbs.csdn.net/topics/360140208

#15


这个问题之前刚见人问过,建议先学习一下窗体间传值,再实现这个轻而易举,这里有一个类似的问题 http://www.hellocsharp.com/ask/14.aspx

#16


看来lz也是刚学编程。和我当年一样为了这么个问题,纠结了好久啊。那会还没有csdn呢。

楼上的都是解决办法。
如果你在form1中打开了form2,并且使用了ShowDialog()方法的话,
那么在showdialog()后面就可以加入刷新grideview的代码了。

如果不是以上办法,那么使用委托就可以了,在form2实例化以后,传入一个委托的变量并且绑定方法。
在form2关闭时,调用委托的方法,在form1中刷新数据完成后,才会关闭form2.

#17


那会还没有csdn呢。《============准确的说是我没听说过csdn。

#18


引用 17 楼 mjp1234airen4385 的回复:
那会还没有csdn呢。《============准确的说是我没听说过csdn。


呵呵 免得 被喷是不 在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview

#19


不如说,那会还没有C#呢...

#20


引用 18 楼 zou433 的回复:
Quote: 引用 17 楼 mjp1234airen4385 的回复:

那会还没有csdn呢。《============准确的说是我没听说过csdn。


呵呵 免得 被喷是不 在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview


一个是我喜欢说话严谨一些,另外就是确实遇到过好几个喷子。
前段时间有几天回帖勤快了点,有人喷:到处都能遇见你,然后就。。。。。,此处省略若干字。


引用 19 楼 Z65443344 的回复:
不如说,那会还没有C#呢...


确实没有C#,使用delphi起家的。

#21


我也是先研究的delphi,不过那时还没入门,只会用别人现成的代码改改
而那个别人,也是个臭手,代码写的又臭又长,复制粘贴改来改去
而且经常出现不明所以的错误,删了重新来就又好使,简直崩溃了
现在那个破程序也还在用,但是阶段性的就会出现某个窗体再也不好使了的情况
正准备改造的时候全部推翻重来呢.

#22


http://pan.baidu.com/s/1ntJUZgd

我写了个 例子  你到 百度网盘下载一下把

#23


结贴:我确实是新手
先谢谢大家了~ 为造福后人,总结一下
我的解决方法如下,可能比较低级,但新手易理解
 在form2确认添加按钮下: DialogResult = DialogResult.OK;
在 form1 添加调至form2按钮下:if (f2.ShowDialog() == DialogResult.OK)

检索一遍
}
这样就OK了 在form2里 点击添加按钮,添加数据并且刷新form1中的datagridview

#24


感谢!终于找到我会用的了

#25


同样的问题,很类似!