objectdatasource将gridview数据源转换回通用列表

时间:2012-05-21 15:26:34

标签: c# asp.net

环境:asp.net fx3.5

我正在使用objectdatasource作为gridview。首先,我为我的客户加载了来自通用List<Attachments>的记录的gridview。接下来,我想在gridview中添加/删除项目,而不是在完成所有添加/删除之后才会访问数据库。然后用户将点击“保存”按钮,然后我将在gridview中保留这些项目。

我的问题是,当objectdatasource连接到gridview时,如何在gridview中添加/删除项目?我的猜测是以某种方式将gridview行转换回通用列表,添加/删除项目,并重新绑定?这甚至可能吗?

3 个答案:

答案 0 :(得分:1)

如果您正在执行或者可以在添加/删除时进行回发,我建议将更改保存到数据库。由于不沿更改保存数据可能会导致信息丢失。您可以使用ajax调用进行添加/删除,以使其更加优雅和快速,而无需重新加载整个页面。

如果要在客户端进行所有添加/删除并最终保存到数据库,则可以使用客户端存储暂时保留更改,最后将更改发送回服务器并将其提交到数据库。有关客户端存储的文章here,但旧浏览器可能不支持

您可以在隐藏字段中进行更改,例如对于已删除的记录,您有一个隐藏字段存储已删除的记录ID,隐藏字段上添加了具有设置模式的记录,并在回发时使用这些隐藏字段再次更新数据库存在丢失的危险使用此方法的信息

答案 1 :(得分:1)

您可以临时存储在ViewState中。您需要有一个提供程序类,即对您在视图状态中存储的列表执行基本CRUD操作的类。

答案 2 :(得分:0)

由于您只是使用网格事件来存储所有这些信息以进行处理,因此您在数据源中唯一需要的是select方法,这样它就不会尝试更新/插入记录。您可以在rowCommand事件上执行所有事件处理。

至于你在尝试什么,我认为这不是一个好主意。您必须在会话中跟踪多个记录,或者单独的数据库表(但那么重点是什么?)。