5

我有一个 GridView,它允许一直编辑每一列、每一行中的值。用户输入所有更改,单击保存一次,所有更改都已提交。

用户还必须能够单击“新建”按钮,在 GridView 中出现一个新行(是的,它必须显示在实际的 GridView 中),输入他们想要的任何数据,单击“保存”并将所有更改转到数据库.

现在。这是一个让我失望的用户案例:用户到达页面,对几个现有行进行了几处更改,然后需要添加一个新行,在新行中输入数据,单击保存,然后将所有更改转到数据库.

但是,我见过的添加新的空行的唯一方法是重新绑定 GridView,这意味着它们的所有更改都将丢失。这显然不好。

所以,我的问题是:有哪些方法可以在不必重新绑定 GridView 的情况下向 GridView 添加新的、空的、可编辑的行?

我唯一能想到的是,在新按钮的单击事件中,从 GridView 中吸出所有数据(包括用户的潜在编辑),将其保存到 ViewState(或其他),添加新行,重新填充网格。对我来说,这似乎有点 hacky,但它应该允许我在 GridView 上关闭 ViewState。

有任何想法吗?

4

2 回答 2

3

就在我的脑海里,我能想到两个选择。第一个是缓存您绑定到网格中的原始结果,当您需要添加另一行时,您将数据行添加到您要绑定的数据表,然后将其绑定到网格。如果网格中有更改,则需要更新数据表。完成所有更改并且用户单击保存按钮后,您可以遍历表并使用数据更新数据库。

它可能看起来像这样

页面加载

  • 获取数据库数据并放入表中
  • 将表格绑定到网格
  • 将表存储在缓存中

当用户请求新行时

  • 获取缓存的数据对象。
  • 更新任何已更改的行
  • 添加一个空行绑定到网格

当用户保存网格时

  • 获取缓存的对象。
  • 进行最后一组更新
  • 循环遍历行并更新数据库

The other way to do this is by creating the grid dynamically but this will involve far more effort than it's worth given what you have described.

于 2008-11-07T19:33:00.387 回答
0

You could dynamically add the new row via javascript, and on the save command look for newly added rows. That is fairly common.

于 2008-11-07T19:56:13.630 回答