我的网站上有一个数据表,它显示 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 页时,所有插入的行都会消失,只留下填充的行。有没有办法保留插入的行?或者有人对此有任何解释或解决方案吗?
谢谢。
您对
DataBind
的调用正在从其原始数据重建 GridView
。您需要确保要绑定的数据集包含添加的项目。通常,我有一种方法可以从页面收集项目并使用这些项目进行绑定。
在您的情况下,当您添加新行时,您只想重新绑定
DataTable
(在示例代码中名为 dt
)。
GridView3.DataSource = dt
这意味着您必须将其保存在某个地方。从您的代码中不清楚原始
DataTable
来自何处,因此我对您下一步可能进行的操作没有任何建议。由于您的网格支持分页,我的典型方法甚至不起作用。
简单地说,因为这是一个网页,所以服务器不会记住回发之间没有保留在某处的任何内容。您的选择是将其保存到页面中的某个位置,将其保存到数据库中的某个位置,或者将其保存到会话中 - 对于任何大尺寸的数据集来说,这都是一个非常糟糕的主意。
如果您最终要保留数据,您现在也许可以搭载该持久性 - 添加后保存它,并且每当编辑完成时,都会重新绑定保留的数据。