所以我的网站上有一个数据表,它显示了10-20行填充数据。我添加了一行代码,在现有数据表中插入一个空行,代码如下:
dt.Rows.InsertAt(datatable.NewRow, 8)
我也有这个在数据表中进行分页所需的内容:
Protected Sub GridView3_PageIndexChanging(sender As Object, e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView3.PageIndexChanging
GridView3.PageIndex = e.NewPageIndex
GridView3.DataBind()
End Sub
问题是当我从第1页移到第2页然后再回到1时,所有插入的行都会消失,只留下填充的行。有没有办法保持插入行?或者有人对此有任何解释或解决方案吗?
感谢。
答案 0 :(得分:2)
您对DataBind
的来电是从原始数据重建GridView
。您需要确保绑定的数据集包含添加的项目。通常,我有一个方法从页面收集项目并使用这些项目进行绑定。
在您的情况下,您只需要在添加新行时重新绑定DataTable
(在示例代码中名为dt
)。
GridView3.DataSource = dt
这意味着您必须将它放在某处。从您的代码中不清楚原始DataTable
来自何处,因此我对您接下来的工作地点没有任何建议。由于你的网格支持分页,我的典型方法甚至都不起作用。
简单地说,因为这是一个网页,服务器会记住在某个地方没有持久的回发之间的任何内容。您可以选择将其保存到某个地方的页面中,将其保存到某个地方的数据库中,或者将其保存到会话中 - 对于任何大小的数据集来说都是一个非常糟糕的主意。
如果您最终将持久保存数据,您现在可以捎带该持久性 - 在添加之后保存它,并且每当编辑完成时,重新绑定持久数据。