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

问题描述 投票:0回答:1

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

谢谢。

asp.net datatable pagination insert row
1个回答
2
投票

您对

DataBind
的调用正在从其原始数据重建
GridView
。您需要确保要绑定的数据集包含添加的项目。通常,我有一种方法可以从页面收集项目并使用这些项目进行绑定。

在您的情况下,当您添加新行时,您只想重新绑定

DataTable
(在示例代码中名为
dt
)。

GridView3.DataSource = dt

这意味着您必须将其保存在某个地方。从您的代码中不清楚原始

DataTable
来自何处,因此我对您下一步可能进行的操作没有任何建议。由于您的网格支持分页,我的典型方法甚至不起作用。

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

如果您最终要保留数据,您现在也许可以搭载该持久性 - 添加后保存它,并且每当编辑完成时,都会重新绑定保留的数据。

© www.soinside.com 2019 - 2024. All rights reserved.