最近在公司一个小项目中的后台部分使用Gridview绑定更新时,遇到了个无法更新的问题。程序是用LINQ返回底层数据,Gridview在其他页面修改数据后返回页面有Gridview的页面时,数据没有变,而且不管怎么刷新都没有用,可是数据库里的数据已经改变了,而且gridview在加载时也已经绑定了,调试发现绑定的数据源的数据也已经改变了,但是页面显示还是原来的数据,必须在vs里重新加载一次才显示更改后的数据。
问了很多人,给了许多种解决方案,但是没有一个能解决的,例如viewstate关闭;要加Ispostback;要删除完了,加绑定啊;返回Gridview页面时要取消缓存啊;先清空数据源,然后再绑定啊等等。最后无奈下用回2.0的原来sql方法,居然就可以更新了,原来问题出在LINQ返回数据源上,到底怎么样解决呢?我想来想去是不是用来返回底层数据的Table<表>类型出了问题,我改成IQueryable<>一试Gridview就可以显示更新后的数据。
查了下msdn,IQueryable<>提供对数据类型已知的特定数据源的查询进行计算的功能。Table<表>表示基础数据库中特定类型的表。
因为LINQ是现学现用,而且自己也是个刚出道,有些问题知道怎么解决了,但是为什么会这样?还是不知道。希望园子里的朋友能多多指教.