c# 子窗体修改完数据后怎么刷新父窗体的 datagridview?

子窗体的数据是从父窗体传过来的,是父窗体选中的一行的值。
子窗体的这些值怎么组织成一个datatable?

第1个回答  2013-07-22
重新获取dataGridView的DataSource为DataSource1

把子窗体传过来的数据添加到DataSource1,重新绑定。
第2个回答  2013-07-22
完成操作后 重新绑定数据源,然后再跳转到父窗体就可以了
要重新绑定数据源
datasource 和databind
第3个回答  2013-07-22
重新给dataGridView的DataSource赋值就可以了。追问

但这样的话dataGridView只显示一行(子窗体的数据是从父窗体传过来的,是父窗体选中的一行的值),原来的行不显示了。

追答

能够多上一点代码或者截图吗

追问

这是子窗体,

这是父窗体。选中父窗体某一行,点击修改弹出子窗体。

追答

子窗体修改完了以后有没有更新到数据库?

追问

没有,先传到父窗体,然后父窗体负责更新。

追答

那你应该有一个变量负责缓存所有的数据吧。

两个解决方案:

    子窗体修改完了立即更新到数据库中,然后在父窗体中重新获取所有数据

    子窗体修改完了只在内存中用作缓存的变量(DataSet、List<T>或者DataTable等等,具体看你喜欢哪个),然后父窗体中重新将更新后的变量赋值给DataSource,最后再同一更新到数据库。

当然第1种解决方案的效率较低,如果数据量很大的话,会做很多无谓的查询,但是也有优化的空间,比如子窗体更新的时候记录被修改的记录的ID,然后在父窗体中只查询这一条数据,然后再做相应的操作,比较tricky。

第2种方案也有弱点,就是当数据量非常大的时候,内存会很吃紧。反正时间空间你不能兼得,具体情况具体分析。

追问

恩,明白了,谢谢,还有怎么子窗体这些控件的值怎么组织成一个datatable?我现在已经获得了这些控件的值。传参时传得是datatable

本回答被提问者和网友采纳
第4个回答  2013-07-22
父窗口设置delegate,
子窗口调用

C#中在子窗口添加新内容后如何自动刷新父窗口,有具体代码么 非常感谢啦...
可以用代理事件实现。不过简单一点的方法就是下面我介绍的这种。Form1是Datagridview的页面。Form2是修改值的页面。Form1:private void adddata(){ if(Form2.ShowDialog() == DialogResult.OK){ \/\/重新绑定数据库 BindDgv();} } Form2:private void btnOK_Click(){ \/\/添加数据的代码...\/\/下...

C# 如何刷新 父窗口的 datagridview。我做了一个增加窗口,增加成功后关 ...
在子窗口里定义一个公共变量public一个bool类型EditOk,还有要返回的数值EditValue,如果这个是真的情况,就说明数据做出了修改。Form1 Form01=new Form1();Form01.ShowDialog();if (Form01.EditOk){ Edt = Form01.EditValue.ToString();\/\/这里传入Form01中的变量到主窗口。if (更新数据的函数,...

C#代码form2窗体如何刷新form1窗体datagridview呢?
这个就是典型的子窗体要刷新父窗体。方法有多种,下面说种我自己常用的:点击Form1的button1 打开Form2;再点击Form2的button2 在button2_Click事件中通过this.Owner获取Form1的datagridview 并关闭Form2 public partialclass Form1 : Form{ public Form1() { InitializeComponent(); }...

...子窗体然后刷新主窗体中的datagridview中的数据
子窗口用模式对话框显示(子窗口.ShowDialog() 然后在这句代码下写上 datagridview绑定数据的代码 子窗口.ShowDialog() ;BindDate(); 这是一个绑定datagridview数据的一个方法

C#语言中子窗体输入查询条件如何在父窗体的GridView中显示查询结果_百 ...
然后当你子窗体关闭的时候把你输入的条件赋值给sqlwhere。然后在主窗体下用新的条件重新刷新窗口。写一个简单的例子吧,比如两个窗体是form1和form2,在form2下有个textbox输查讯条件,在form1下有datagridview.form1单击查询按钮的事件:form2 frm = new form2();if(frm.showdialog() == ...

求大神,C#怎么从其他form刷新另一form上的datagridview值
首先打开第二个窗体,后续再打开的时候,判断窗体是否在,在的话就直接激活,不在的话再new,另外,你修改了gridview的值是需要刷新数据源的。

C# winform中 界面加载时datagridview绑定了数据源(datatable),修改dat...
重新绑定,例如:在事件中加入如下代码,datagridview.DataSours=(数据库新查询的数据);datagridview.Bind();

C#修改datagridview 的值,并更新数据库
datagridview中的数值你是通过dataset和dateadapter读出来的吧,然后当做datasource给了datagridview,你可以编辑datagridview的最后一行为button,同时绑定一个函数来弹出窗体,而绑定的函数里会有你点击的是那一行,然后从dateset中读出相应一行的数据赋值给窗体。修改后点击窗体的确定,将dataset中的table【0】...

C#datagridview边框随着窗体的改变而改变?我的这个程序,默认大小正好...
选中datagridview 然后点击属性 选择里面的Anchor属性 然后去设置你要改变的位置 选中哪个方向 控件就会在窗体发生改变的时候自动往那边填充。

...里面的字段怎么显示到另一个窗体的datagridview里面
重写新窗体,Form2的构造方法,然后用 Form2 fm2= new Forms("DOC");将"DOC"传过去。public partial class Form2: Form { private string fileType = null;public Form2(){ InitializeComponent();} public Form2(string fileType){ InitializeComponent();this.fileType = fileType;} } ...

相似回答