Exemplo n.º 1
0
        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);
                    }
                }
            }
        }
Exemplo n.º 2
0
        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");
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
 public void Process(ControlTreeItemTrackModel root, IEnumerable <PageLifeCycleMessage> pageLifeCycleMessages)
 {
     ProcessRecord(root, (Dictionary <string, List <DataBindParameterModel> >)HttpContext.Current.Items["_GlimpseWebFormDataBinding"], pageLifeCycleMessages.OrderByDescending(p => p.Offset));
 }