C# objectdatasource将gridview数据源强制转换回通用列表

C# objectdatasource将gridview数据源强制转换回通用列表,c#,asp.net,C#,Asp.net,环境:asp.net fx3.5 我正在为我的gridview使用objectdatasource。首先,我从客户的通用列表中加载gridview记录。接下来,我想从gridview中添加/删除项,而不点击数据库,直到完成所有的添加/删除操作。然后用户将点击Save按钮,然后我将在gridview中保存这些项目 我的问题是,当objectdatasource连接到gridview时,如何在gridview中添加/删除项?我的猜测是,如何将gridview行转换回通用列表,添加/删除项,然后重新绑

环境:asp.net fx3.5

我正在为我的gridview使用objectdatasource。首先,我从客户的通用
列表中加载gridview记录。接下来,我想从gridview中添加/删除项,而不点击数据库,直到完成所有的添加/删除操作。然后用户将点击Save按钮,然后我将在gridview中保存这些项目


我的问题是,当objectdatasource连接到gridview时,如何在gridview中添加/删除项?我的猜测是,如何将gridview行转换回通用列表,添加/删除项,然后重新绑定?这可能吗?

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


至于你在尝试什么,我认为这不是个好主意。您必须在会话中跟踪多条记录,或者跟踪一个单独的DB表(但这又有什么意义呢?)

如果您正在或可以在添加/删除时回发,我建议您保存对数据库的更改。因为不随更改保存数据可能会导致信息丢失。您可以使用ajax调用add/remove,使其更加优雅和快速,而无需重新加载整个页面

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


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

您可以临时存储在ViewState中。您需要有一个provider类,即对存储在viewstate中的列表执行基本CRUD操作的类。

很抱歉,我有一个客户列表,而它本应是客户的附件列表。好的,现在更有意义了。因此,在您的数据源上只有一个select方法应该满足您的需要,现在您只需要删除或添加这些行。您可以使用rowindex来实现这一点,让我找一个例子。。。。