ASP.net在Datatable中插入的行在页面更改时消失

时间:2011-12-21 04:45:56

标签: asp.net insert datatable row paging

所以我的网站上有一个数据表,它显示了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时,所有插入的行都会消失,只留下填充的行。有没有办法保持插入行?或者有人对此有任何解释或解决方案吗?

感谢。

1 个答案:

答案 0 :(得分:2)

您对DataBind的来电是从原始数据重建GridView。您需要确保绑定的数据集包含添加的项目。通常,我有一个方法从页面收集项目并使用这些项目进行绑定。

在您的情况下,您只需要在添加新行时重新绑定DataTable(在示例代码中名为dt)。

GridView3.DataSource = dt

这意味着您必须将它放在某处。从您的代码中不清楚原始DataTable来自何处,因此我对您接下来的工作地点没有任何建议。由于你的网格支持分页,我的典型方法甚至都不起作用。

简单地说,因为这是一个网页,服务器会记住在某个地方没有持久的回发之间的任何内容。您可以选择将其保存到某个地方的页面中,将其保存到某个地方的数据库中,或者将其保存到会话中 - 对于任何大小的数据集来说都是一个非常糟糕的主意。

如果您最终将持久保存数据,您现在可以捎带该持久性 - 在添加之后保存它,并且每当编辑完成时,重新绑定持久数据。