Я создаю элемент управления списком / сеткой в приложении Flex
и использую его в веб-приложении .NET
. Короче говоря, я получаю XML от веб-сервиса сериализованных объектов. У меня есть ограничение на количество страниц на странице. Я взял сетку данных и сделал ее постраничной, отсортировал по страницам и провел некоторую базовую фильтрацию.
Что касается подкачки страниц, я использую словарь на странице и храню XML для этой страницы. Таким образом, всякий раз, когда пользователь возвращается на страницу, которую я сохранил в этом словаре, я могу получить XML из локальной памяти вместо того, чтобы обращаться к веб-сервису. По сути, я кеширую данные, полученные при каждом обращении к веб-сервису, для страницы данных.
Есть несколько вещей, которые могут истечь мой кеш. Фильтрация и сортировка являются основной причиной. Тем не менее, пользователь может редактировать строку данных в сетке, открыв редактор. Данные, которые они редактируют, могут стать причиной устаревания данных, отображаемых в строке. Я мог бы легко зайти в веб-сервис и получить всю страницу данных, но, поскольку размер страницы установлен во время выполнения, я мог бы просмотреть большое количество записей для извлечения.
Итак, позвольте мне теперь понять суть проблемы, с которой я сталкиваюсь. Чтобы предотвратить возвращение всей страницы данных, я обращаюсь к веб-сервису с просьбой полностью обновить запись (редактор обрабатывает сохранение своих данных).
Поскольку я использую пользовательские объекты, мне нужно сериализовать их на сервере в XML (это уже обрабатывается для других частей нашего программного обеспечения). Все данные обрабатываются через XML в e4x. Кеш в Словаре хранится в виде 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];
}
По сути, я получаю идентификатор узла, который хочу заменить. Затем я нахожу его в свойстве Data кеша (XMLList
). Я уверен, что он существует, поскольку фильтр во второй строке возвращает XMLList
.
У меня проблема со строкой удаления. Я не могу заставить эту строку удалить этот узел из списка. Строка после строки удаления работает. Я добавил узел в список.
Как заменить или удалить этот узел (имеется в виду узел, который я нахожу из оператора фильтра из свойства .Data кеша) ???
Надеюсь, подчеркивания для всех моих переменных не останутся без экранирования при публикации! в противном случае this._ == this
._