我正在应用程序中构建列表/网格控件并在Web 应用程序Flex
中使用它。.NET
长话短说,我从序列化对象的 Web 服务中获取 XML。我有一个页面上可以有多少东西的页面限制。我采用了一个数据网格并将其制成页面,跨页面排序,并处理一些基本过滤。
关于分页,我使用在页面上键入的 Dictionary 并存储该页面的 XML。这样,每当用户返回我保存到此字典中的页面时,我都可以从本地内存中获取 XML,而不是访问 web 服务。基本上,我正在缓存从每次调用 web 服务中检索到的数据以获取一页数据。
有几件事可以使我的缓存过期。过滤和排序是主要原因。但是,用户可以通过打开编辑器来编辑网格中的一行数据。他们编辑的数据可能会导致行中显示的数据过时。我可以轻松地访问 Web 服务并获取整个数据页面,但由于页面大小是在运行时设置的,因此我可能会查看大量要检索的记录。
因此,现在让我谈谈我遇到的问题的核心。为了防止取回整个数据页面,我调用了 web 服务,请求完全更新的记录(编辑器处理保存其数据)。
由于我使用的是自定义对象,因此我需要在服务器上将它们序列化为 XML(这已经为我们软件的其他部分处理了)。所有数据都通过 e4x 中的 XML 处理。Dictionary 中的缓存存储为 XMLList。
现在让我向您展示我的代码...
var idOfReplacee:String = this._WebService.GetSingleModelXml.lastResult.*[0].*[0].@Id;
var xmlToReplace:XMLList = this._DataPages[this._Options.PageIndex].Data.(@Id == idOfReplacee);
if(xmlToReplace.length() > 0)
{
delete (this._DataPages[this._Options.PageIndex].Data.(@Id == idOfReplacee)[0]);
this._DataPages[this._Options.PageIndex].Data += this._WebService.GetSingleModelXml.lastResult.*[0].*[0];
}
基本上,我得到了要替换的节点的 id。然后我在缓存的 Data 属性 ( XMLList
) 中找到它。我确保它存在,因为第二行的过滤器返回XMLList
.
我遇到的问题是删除行。我无法使该行从列表中删除该节点。删除行之后的行有效。我已将节点添加到列表中。
如何替换或删除该节点(即我从缓存的 .Data 属性中的过滤语句中找到的节点)???
希望我所有变量的下划线在发布时都不会被转义!否则this._ == this
._