在没有DataBind的情况下向GridView添加新行

Jas*_*son 5 asp.net data-binding gridview

我有一个GridView,它允许始终在每一行中的每一列中编辑值.用户输入所有更改,单击"保存"一次,然后提交所有更改.

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

现在.以下是抛弃我的用户案例:用户到达页面,对几个现有行进行多处更改,然后需要添加新行,在新行中输入数据,单击"保存",并将所有更改都转到数据库.

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

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

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

有任何想法吗?

Mid*_*one 3

我立即想到了两个选择。第一个是缓存您绑定到网格中的原始结果,当您需要添加另一行时,您可以将数据行添加到您要绑定到的数据表中,然后将其绑定到网格。如果网格中有变化,则需要更新数据表。完成所有更改并且用户单击“保存”按钮后,您可以迭代表并使用数据更新数据库。

它可能看起来像这样

页面加载

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

当用户请求新行时

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

当用户保存网格时

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

另一种方法是动态创建网格,但这将涉及比您所描述的内容更多的工作。