public DataControlRangeDataCollection(DataSourceId dataSourceIdentifier, IRangeDataBuilder rangeDataBuilder, int controlId)
 {
     this.dataSourceIdentifier = dataSourceIdentifier;
     rangeDataList             = rangeDataBuilder.Build(BoudariesFlags.Range);
     rangeComparer             = new ListComparer <List <RangeData> >();
     this.controlId            = controlId;
 }
 /// <summary>
 /// Instantiates a DC values compute strategy for a specific data control. The compute
 /// strategy will use the given DC values builder to build the list.
 /// </summary>
 /// <param name="boundControlId"></param>
 /// <param name="dcValuesBuilder"></param>
 /// <param name="dcValuesRangeBuilder"></param>
 /// <param name="rangeDataSourceId"></param>
 public DataControlValuesComputeStrategy(int boundControlId, DcValuesBuilderBase dcValuesBuilder, IRangeDataBuilder dcValuesRangeBuilder, DataSourceId rangeDataSourceId)
 {
     this.dcValuesBuilder      = dcValuesBuilder;
     this.boundControlId       = boundControlId;
     this.dcValuesRangeBuilder = dcValuesRangeBuilder;
     this.rangeDataSourceId    = rangeDataSourceId;
 }
        public DataControlSourceViewDefinition(DataSourceReference dataSourceReference, int keyIndex, int valueFieldIndex, int displayFieldIndex, int boundControlId)
        {
            TaskDataSource = dataSourceReference;
            DbKey          = dataSourceReference.DataSourceDefinition.TryGetKey(keyIndex);
            DbFields       = new List <DBField>();
            DBField f = dataSourceReference.DataSourceDefinition.Fields[displayFieldIndex];

            DbFields.Add(f);
            if (valueFieldIndex == -1)
            {
                valueFieldIndex = displayFieldIndex;
            }
            f = dataSourceReference.DataSourceDefinition.Fields[valueFieldIndex];
            DbFields.Add(f);
            BoundControlId   = boundControlId;
            RangeDataBuilder = null;
        }
Exemplo n.º 4
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        internal override ReturnResultBase Execute()
        {
            IRangeDataBuilder origRangeDataBuilder = null;
            IFieldView        fieldView            = TaskViews.Fields[fieldId];

            // Initialize the stuff needed to locate the right record
            if (!fieldView.IsVirtual && !fieldView.IsLink)
            {
                // set the range builder, which will pass the data to the gateway
                origRangeDataBuilder            = TaskViews.ViewMain.RangeBuilder;
                TaskViews.ViewMain.RangeBuilder = new IncrementalLocateRangeDataBuilder(TaskViews.ViewMain.ViewBoundaries, minValue, fieldView);
                // use the base record computer - no need for extra computing after the fetch
                recordComputer = base.RecordComputer;
            }
            else
            {
                // the gateway will not compute it for us - need to use a special record computer
                RecordComputerBuilder recordComputerBuilder = new IncrementalLocateRecordComputerBuilder(fieldView, minValue)
                {
                    LocalDataviewManager = LocalDataviewManager,
                    TaskViews            = TaskViews
                };
                recordComputer = recordComputerBuilder.Build();
            }

            TaskViews.ViewMain.CurrentCursor = TaskViews.ViewMain.LocateCursor;

            // try and get a matching record
            base.Execute();

            TaskViews.ViewMain.CurrentCursor = TaskViews.ViewMain.defaultCursor;

            // restore ViewMain state
            if (origRangeDataBuilder != null)
            {
                TaskViews.ViewMain.RangeBuilder = origRangeDataBuilder;
            }

            return(new GatewayResult());
        }