private void ProcessRecord(ControlTreeItemTrackModel item, object viewstate, Dictionary <string, Type> controlTypes) { if (viewstate != null) { var viewStateType = viewstate.GetType(); if (viewStateType == typeof(Pair)) { var pair = (Pair)viewstate; item.Record.Viewstate = ProcessData(controlTypes[item.ControlId], item.Record.Type, pair.First); ProcessRecord(item, pair.Second, controlTypes); } else if (viewStateType == typeof(Triplet)) { var triplet = (Triplet)viewstate; item.Record.Viewstate = ProcessData(controlTypes[item.ControlId], item.Record.Type, triplet.First); // NEED TO DO SOMETHING WITH SECOND ITEM? ProcessRecord(item, triplet.Third, controlTypes); } else if (viewStateType == typeof(ArrayList)) { var list = (ArrayList)viewstate; for (var i = 0; i < list.Count; i = i + 2) { var index = (int)list[i]; ProcessRecord(item.Children[index], list[i + 1], controlTypes); } } } }
public void Process(ControlTreeItemTrackModel root) { Logger.Debug("Start merging in the viewState data to the ControlTree"); var viewState = HttpContext.Current.Items["_GlimpseWebFormViewState"] as Pair; var controlTypes = HttpContext.Current.Items["_GlimpseWebFormControlTreeType"] as Dictionary <string, Type>; if (viewState != null && root.Children.Count > 0) { Logger.Debug("Process Root node for viewState data to the ControlTree mapping"); ProcessRecord(root.Children[0], viewState, controlTypes); } Logger.Debug("Finish merging in the viewState data to the ControlTree"); }
private void ProcessRecord(ControlTreeItemTrackModel item, Dictionary <string, List <DataBindParameterModel> > dataBindInfo, IEnumerable <PageLifeCycleMessage> pageLifeCycleMessages) { if (dataBindInfo.ContainsKey(item.ControlId)) { item.Record.DataBindParameters = new List <DataBindModel>(); var dataBindModel = new DataBindModel(null, null); foreach (var parameterModel in dataBindInfo[item.ControlId]) { var dataBindParameters = new List <ModelBindParameter>(); var time = DateTime.MinValue; foreach (var parameter in parameterModel.DataBindParameters) { dataBindParameters.Add(parameter); } var lifeCycleEvent = pageLifeCycleMessages.First(p => p.Offset <= parameterModel.Offset); if (dataBindModel.Event == lifeCycleEvent.EventName) { var multipleEventParameters = dataBindModel.Parameters as List <EventParameterModel>; if (multipleEventParameters == null) { var existingEventParameters = (List <ModelBindParameter>)dataBindModel.Parameters; multipleEventParameters = new List <EventParameterModel>(); dataBindModel.Parameters = multipleEventParameters; multipleEventParameters.Add(new EventParameterModel(0, existingEventParameters)); } multipleEventParameters.Add(new EventParameterModel(multipleEventParameters.Count, dataBindParameters)); } else { dataBindModel = new DataBindModel(lifeCycleEvent.EventName, dataBindParameters); item.Record.DataBindParameters.Add(dataBindModel); } } } foreach (var child in item.Children) { ProcessRecord(child, dataBindInfo, pageLifeCycleMessages); } }
public void Process(ControlTreeItemTrackModel root, IEnumerable <PageLifeCycleMessage> pageLifeCycleMessages) { ProcessRecord(root, (Dictionary <string, List <DataBindParameterModel> >)HttpContext.Current.Items["_GlimpseWebFormDataBinding"], pageLifeCycleMessages.OrderByDescending(p => p.Offset)); }