问题描述
usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.SqlClient;namespace事件测试{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}SqlConnectioncon=newSqlConnection("server=.;database=pubs;uid=sa;pwd=");DataSetds=newDataSet();byte[]binaryDataResult=null;//用来接收二进制数据privatevoidbutton1_Click(objectsender,EventArgse){try{SqlDataAdaptersda=newSqlDataAdapter("select*fromtable1",con);sda.Fill(ds,"st");ds.Tables["st"].TableNewRow+=newDataTableNewRowEventHandler(TableNewRow);if(ds.Tables[0].Rows.Count!=0){testmy=newtest();binaryDataResult=my.CompressionDataSet(ds);}else{MessageBox.Show("表已经没有数据");}}catch(Exceptionx){MessageBox.Show(x.Message);}finally{con.Close();}}privatevoidTableNewRow(objectsender,DataTableNewRowEventArgse){try{if(binaryDataResult.Equals("")){MessageBox.Show("没有数据");}else{testmy=newtest();ds=my.DecompressionDataSet(binaryDataResult);this.dataGridView1.DataSource=ds.Tables["st"];//数据反序列化之后绑定}}catch(Exceptions){MessageBox.Show(s.Message);}}}}我按下按扭没有任何改变!!!有那位大虾用过没?我是想在往dataset里面填充的时候就直接绑定到datagrid!!
解决方案
解决方案二:
this.dataGridView1.DataSource=ds.Tables["st"];//数据反序列化之后绑定是不是这行问题。ST是表名?你改成this.dataGridView1.DataSource=ds.Tables[0];试一下。
解决方案三:
我觉得你可以这样,在按下按钮后给DataSet添加一行记录,然后再把显示控件和DataSet重新绑定
解决方案四:
引用楼主mc520的帖子:
usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.SqlClient;namespace事件测试{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}…我按下按扭没有任何改变!!!有那位大虾用过没?我是想在往dataset里面填充的时候就直接绑定到datagrid!!
我觉得还是把dataset填充完毕之后再绑定比较好,按照楼主这种想法,那不是在dataset填充的过程中,datagrid不停的调用该事件,不停的进行重新绑定-_-另外TableNewRow事件是在使用NewRow创建DataRow后激发。例如下面这样的代码:DataTabletable=newDataTable();DataRowrow;//table结构初始过程table.Columns.Add("id");table.Columns.Add("name");...Ttable.ableNewRow+=newDataTableNewRowEventHandler(TableNewRow);row=table.NewRow();//这一句事件会被触发row["id"]=5;row["name"]="Name1";...table.Rows.Add(row);privatevoidTableNewRow(objectsender,DataTableNewRowEventArgse){MessageBox.Show("CallEvent");}
解决方案五:
[code=C#]usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.SqlClient;namespace事件测试{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}SqlConnectioncon=newSqlConnection("server=.;database=pubs;uid=sa;pwd=");DataSetds=newDataSet();byte[]binaryDataResult=null;//用来接收二进制数据privatevoidbutton1_Click(objectsender,EventArgse){try{SqlDataAdaptersda=newSqlDataAdapter("select*fromtable1",con);//sda.Fill(ds,"st");//sda已经Fill到sttable,所以不会产生后面的TableNewRow事件DataTabletb=newDataTable("st");ds.Tables.Add(tb);ds.Tables["st"].TableNewRow+=newDataTableNewRowEventHandler(TableNewRow);sda.Fill(ds,"st");if(ds.Tables[0].Rows.Count!=0){testmy=newtest();binaryDataResult=my.CompressionDataSet(ds);}else{MessageBox.Show("表已经没有数据");}}catch(Exceptionx){MessageBox.Show(x.Message);}finally{con.Close();}}privatevoidTableNewRow(objectsender,DataTableNewRowEventArgse){try{if(binaryDataResult.Equals("")){MessageBox.Show("没有数据");}else{testmy=newtest();ds=my.DecompressionDataSet(binaryDataResult);this.dataGridView1.DataSource=ds.Tables["st"];//数据反序列化之后绑定}}catch(Exceptions){MessageBox.Show(s.Message);}}}}[code]
解决方案六:
点击按钮后给DataSet添加一行新记录,然后重新绑定datagrid数据源即可
解决方案七:
4楼的兄弟感谢你但是还是没有任何反映啊!!
解决方案八:
有人在帮我看看吗?顶