void ControlTreeDataLoader.LoadData() { CssClass = CssClass.ConcatenateWithSpace(CssElementCreator.CssClass); if (isStandard) { CssClass = CssClass.ConcatenateWithSpace("ewfStandard"); } var visibleItems = items.Select(i => Tuple.Create(i.Item1(), i.Item2)); visibleItems = visibleItems.ToArray(); var itemControls = visibleItems.Select( i => { var np = new NamingPlaceholder(getItemControl(i), updateRegionSets: i.Item1.UpdateRegionSets); if (i.Item1.Id != null) { np.ID = i.Item1.Id; } return(np); }); itemControls = itemControls.ToArray(); Controls.Add(new NamingPlaceholder(itemControls)); EwfPage.Instance.AddUpdateRegionLinker( new UpdateRegionLinker( this, "tail", from region in tailUpdateRegions let staticItemCount = items.Count() - region.UpdatingItemCount select new PreModificationUpdateRegion(region.Sets, () => itemControls.Skip(staticItemCount), staticItemCount.ToString), arg => itemControls.Skip(int.Parse(arg)))); var itemControlsById = itemControls.Select((control, index) => new { visibleItems.ElementAt(index).Item1.Id, control }) .Where(i => i.Id != null) .ToDictionary(i => i.Id, i => i.control); EwfPage.Instance.AddUpdateRegionLinker( new UpdateRegionLinker( this, "add", from region in itemInsertionUpdateRegions select new PreModificationUpdateRegion( region.Sets, () => new Control[0], () => StringTools.ConcatenateWithDelimiter(",", region.NewItemIdGetter().ToArray())), arg => arg.Separate(",", false).Where(itemControlsById.ContainsKey).Select(i => itemControlsById[i] as Control))); EwfPage.Instance.AddUpdateRegionLinker( new UpdateRegionLinker( this, "remove", visibleItems.Select( (item, index) => new PreModificationUpdateRegion(item.Item1.RemovalUpdateRegionSets, () => itemControls.ElementAt(index).ToSingleElementArray(), () => "")), arg => new Control[0])); }
void ControlTreeDataLoader.LoadData() { CssClass = CssClass.ConcatenateWithSpace( CssElementCreator.CssClass ); if( isStandard ) CssClass = CssClass.ConcatenateWithSpace( "ewfStandard" ); var visibleItems = items.Select( i => Tuple.Create( i.Item1(), i.Item2 ) ); visibleItems = visibleItems.ToArray(); var itemControls = visibleItems.Select( i => { var np = new NamingPlaceholder( getItemControl( i ), updateRegionSets: i.Item1.UpdateRegionSets ); if( i.Item1.Id != null ) np.ID = i.Item1.Id; return np; } ); itemControls = itemControls.ToArray(); Controls.Add( new NamingPlaceholder( itemControls ) ); EwfPage.Instance.AddUpdateRegionLinker( new UpdateRegionLinker( this, "tail", from region in tailUpdateRegions let staticItemCount = items.Count() - region.UpdatingItemCount select new PreModificationUpdateRegion( region.Sets, () => itemControls.Skip( staticItemCount ), staticItemCount.ToString ), arg => itemControls.Skip( int.Parse( arg ) ) ) ); var itemControlsById = itemControls.Select( ( control, index ) => new { visibleItems.ElementAt( index ).Item1.Id, control } ) .Where( i => i.Id != null ) .ToDictionary( i => i.Id, i => i.control ); EwfPage.Instance.AddUpdateRegionLinker( new UpdateRegionLinker( this, "add", from region in itemInsertionUpdateRegions select new PreModificationUpdateRegion( region.Sets, () => new Control[ 0 ], () => StringTools.ConcatenateWithDelimiter( ",", region.NewItemIdGetter().ToArray() ) ), arg => arg.Separate( ",", false ).Where( itemControlsById.ContainsKey ).Select( i => itemControlsById[ i ] as Control ) ) ); EwfPage.Instance.AddUpdateRegionLinker( new UpdateRegionLinker( this, "remove", visibleItems.Select( ( item, index ) => new PreModificationUpdateRegion( item.Item1.RemovalUpdateRegionSets, () => itemControls.ElementAt( index ).ToSingleElementArray(), () => "" ) ), arg => new Control[ 0 ] ) ); }