我正在开发一个Web应用程序,在一个页面上我在数据库中插入记录,我想在GridView中显示数据,但是在不同的页面上。我怎么能这样做?
我知道如何在GridView中显示记录,但我想知道是否有两个网页, 在一个页面上提供插入记录的工具,并且U想要在第二页上的GridView位中显示记录。
答案 0 :(得分:0)
虽然可以保留插入的数据而不从数据库中检索数据,但我认为最好将数据保存在第一页并从第二页的数据库中检索数据。
您可以通过编写内联SQL或存储过程来完成此操作。一种简单的方法是将结果集传递给DataTable并将GridView绑定到该。
这确实涉及更多工作 - 更多代码和更多数据库访问。但是,我认为在执行INSERT时非常有用,更新网页以显示实际进入数据库的内容。有时,这与用户认为他们输入的内容不同,他们可以立即看到问题。
一个问题是如何识别刚刚插入的数据。我可以想到几种方法。一种是查询登录的人今天输入的所有记录(记录在数据库表的CreatedBy和CreatedDate列中)。按CreatedDate的降序对结果集进行排序,以便最近的条目显示在GridView的顶部。另一种方法是通过为数据条目分配批号并仅检索该批次中的数据。
如果您真的想要挂起数据条目,可以将其放在第一页的Session中,然后从Session中检索它以显示在第二页上。
答案 1 :(得分:0)
根据DOK所说的内容,在将用户提交到数据库之前验证用户在业务逻辑中输入的数据也更容易。
其次,用户可以经常改变他们对网页数据的看法。 Web上的数据可能处于部分完成状态,或者可能存在拼写错误或错误。如果其他人看到这些数据并认为需要完成,那么您最终可能会在数据库中找到重复的条目,然后需要进行对帐。
老实说,最好的办法是使用Session对象来保存临时用户数据。 GridView RowEditing事件的MSDN条目包含一些用于此方法的优秀源代码。每当我必须使用GridViews来处理数据库中的数据时,我就会模仿它。
除了处理临时数据存储问题之外,您还可以将Session对象与数据库结果进行比较,以确定是否已插入新行。这有点昂贵,因为它涉及重载Equals方法(如果你按照微软的建议,也使用GetHashCode)并使用Equals迭代两个集合,比较两个对象的属性,并根据记录确定哪些记录是新的在Session对象中不存在,但在数据库对象中确实存在。
值得注意的是,这种方法假定您不从数据库中删除数据,而是将数据库中记录的状态设置为“已删除” - 如果这是一个布尔字段或您使用的一系列代码描述表中行的状态。