我有数据访问层,业务逻辑层和表示层(即页面本身)。
我处理OnPreInit事件并填充页面所需的集合。所有数据都来自SQL服务器数据库,我不使用缓存。
我处理按钮单击事件以从表单中获取值并将新对象插入数据库。问题是,当我处理click事件时,已经填充了集合,因此尚未检索已插入数据库的新项目。
对此可接受的解决方案是什么?
我可以将新对象直接插入到集合中并重新绑定GridView,但SQL查询只选择一组对象,而新对象可能不属于此集。
谢谢!
答案 0 :(得分:2)
我通常在我的页面中的两个地方进行数据绑定:
在Page_Load中,如果!IsPostBack加载初始状态。
作为事件处理程序中最后一行显示添加/编辑/删除记录的结果。
您遇到的问题只是使用OnPreInit进行数据绑定的结果,因此您可能不得不停止这样做,或尝试其他人建议的次优方法之一(重定向)回发后返回页面。)
答案 1 :(得分:1)
稍后在页面生命周期中执行数据绑定操作,例如在PreRender事件中,在处理完任何控制事件后触发。
答案 2 :(得分:0)
您应该只处理点击事件。然后在数据库更新/插入后,必须重新绑定数据。根据您的实施情况,您可能需要重新发布该页面。如果您使用普通数据绑定,则可以再次调用bind方法。
答案 3 :(得分:0)
答案 4 :(得分:0)
你可以使用此方法来确定哪个控件在PreInit中发布了回发:http://blogs.microsoft.co.il/blogs/gilf/archive/2010/03/01/discover-which-control-raised-a-postback.aspx