日期:2014-05-18  浏览次数:20886 次

表结构变更时重新生成dataSet后数据绑定会消失,有什么好办法
表结构变更时重新生成dataSet后界面的数据绑定会消失,又得一个一个去设置,有什么好的办法没有?
是不是只能这样,否则就自己写动态绑定的代码?

------解决方案--------------------
建议绑定的是DataTable,而不是DataSet
先读取一个没有数据,只包含结构的DataTable
然后为DataTable创建PrimaryKey
在以后读取数据的时候都使用Merge

代码大概如下,我这里的con是一个自己封装了一下DBHelper,大概参考一下即可。

DataTable dt = con.ExecuteTable("select id,name from 表名 where 1=2");
dt.PrimaryKey = new DataColumn[] { dt.Columns["id"] };

控件就可以去绑定dt这个数据源。以后要刷新数据,都是读取后合并到这个数据表中。

DataTable dt2 = con.ExecuteTable("select id,name from 表名");
dt.Merge(dt2);


另外一种方式就是控件绑定BindingSource,而不要直接绑定到DataSet