首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >List<>删除项问题

List<>删除项问题
EN

Stack Overflow用户
提问于 2009-12-28 11:31:32
回答 2查看 1.4K关注 0票数 1

我们使用List<object>类型作为下拉列表的数据源。

工艺流程:

从event(!ispostback).

  • Retrieve事件的会话中
  1. 为会话分配值(List<object>),从列表中删除特定项并绑定到ddl

代码:

代码语言:javascript
复制
List<Loc> locList = new List<Loc>();
locList =  (List<Loc>)Session["Loc"];
locID = "xxx";

locList.RemoveAt(locList.FindIndex(FindLocation));

问题:

项也将从基源(会话)中移除。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-28 11:33:54

问题是,您正在操作存储在会话中的列表,而不是副本。相反,如果你做这样的事情:

代码语言:javascript
复制
List<Loc> locList = new List<Loc>((List<Loc>)Session["Loc"]);
locID = "xxx";

locList.RemoveAt(locList.FindIndex(FindLocation));

您正在操作列表的副本,而原始文件不会更改。

票数 4
EN

Stack Overflow用户

发布于 2009-12-28 11:36:57

听起来像是在会话中存储列表,取出列表,并对其进行变异。实际上,如果从进程内状态切换到分布式状态或数据库状态,则可能会看到不同的结果。

问题是具有进程内状态,只有一个列表.它不是序列化/反序列化的,所以当您删除一个项目时,它将被删除。您可以很容易地复制列表:

代码语言:javascript
复制
locList = new List<Loc>(locList);

这应该能解决这个问题。对于其他状态实现,数据是序列化的,每个反序列化副本都是单独的,所以您不会看到这一点。但我不会依赖于国家的实现。就我个人而言,我从来不明白为什么允许使用状态来改变行为的微妙性;我宁愿这样做,也不希望总是序列化/反序列化,即使在进程中也是如此。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1969048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档