public override object Process(ServiceResponse response) { this.ServiceError = null; if (response.IsSuccess) { if (response.InfoMessage == null || response.InfoMessage.ToLower() == "null") { this.DataSource = null; return(null); } object current = null; var pageIndex = 0; var currentPosition = 0; if (this.DataSource != null && this.DataSource.CurrentItem != null) { current = this.DataSource.CurrentItem; pageIndex = this.DataSource.PageIndex; currentPosition = this.DataSource.CurrentPosition; } var ds = new PagedCollectionView(InfoExchange.DeConvert <IList>(response.InfoMessage, InfoExchange.SetingsKonwnTypesBinder)); if (current != null) { var item = ds.OfType <object>().Where(c => c.Equals(current)).FirstOrDefault(); if (item != null) { ds.MoveCurrentTo(item); } else { try { ds.MoveToPage(pageIndex); ds.MoveCurrentToPosition(currentPosition); } catch (Exception) { } } } this.DataSource = ds; } else { this.DataSource = null; this.ServiceError = response.ExceptionMessage; } return(this.DataSource); }