对象数据源将网格视图数据源转换回泛型列表

本文关键字:数据源 泛型 列表 转换 视图 网格 对象 | 更新日期: 2023-09-27 18:34:55

环境: asp.net fx3.5

我正在为我的网格视图使用对象数据源。首先,我使用来自客户的通用List<Attachments>的记录加载我的网格视图。接下来,我想从网格视图中添加/删除项目,而无需点击数据库,直到所有添加/删除完成。然后用户将点击"保存"按钮,然后我将在网格视图中保留这些项目。

我的问题是,当对象数据源连接到网格视图时,如何在网格视图中添加/删除项目?我的猜测是以某种方式将网格视图行投射回通用列表,并添加/删除项目并重新绑定?这可能吗?

对象数据源将网格视图数据源转换回泛型列表

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

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

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

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

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

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