예제 #1
0
        async System.Threading.Tasks.Task UpdateValueWithStep(bool stepUp)
        {
            if (Disabled || ReadOnly)
            {
                return;
            }

            var step = string.IsNullOrEmpty(Step) || Step == "any" ? 1 : double.Parse(Step.Replace(",", "."), System.Globalization.CultureInfo.InvariantCulture);

            var valueToUpdate = Value != null?Convert.ChangeType(Value, typeof(decimal)) : (decimal)Convert.ChangeType(default(decimal), typeof(decimal));

            var newValue = ((decimal)Convert.ChangeType(valueToUpdate, typeof(decimal))) + (decimal)Convert.ChangeType(stepUp ? step : -step, typeof(decimal));

            if (Max.HasValue && newValue > Max.Value || Min.HasValue && newValue < Min.Value || object.Equals(Value, newValue))
            {
                return;
            }

            Value = (TValue)ConvertType.ChangeType(newValue, typeof(TValue));

            await ValueChanged.InvokeAsync(Value);

            if (FieldIdentifier.FieldName != null)
            {
                EditContext?.NotifyFieldChanged(FieldIdentifier);
            }
            await Change.InvokeAsync(Value);

            StateHasChanged();
        }
예제 #2
0
        private void button1_Click(object sender, EventArgs e)
        {
            // Change data
            data++;
            object o = data;


            // store data
            string s      = o.ToString();
            int    result = ConvertType.ChangeType <int>(s);
        }
예제 #3
0
        private void button2_Click(object sender, EventArgs e)
        {
            // Change data
            object o = status;

            status++;

            // store data
            string s = o.ToString();

            EngineEventArgs.EventStatus result = ConvertType.ChangeType <EngineEventArgs.EventStatus>(s);
        }
예제 #4
0
        private async System.Threading.Tasks.Task InternalValueChanged(object value)
        {
            TValue newValue;

            try
            {
                BindConverter.TryConvertTo <TValue>(RemoveNonNumericCharacters(value), Culture, out newValue);
            }
            catch
            {
                newValue = default(TValue);
            }

            decimal?newValueAsDecimal = newValue == null ? default(decimal?) : (decimal)ConvertType.ChangeType(newValue, typeof(decimal));

            if (object.Equals(Value, newValue) && !ValueChanged.HasDelegate)
            {
                await JSRuntime.InvokeAsync <string>("Radzen.setInputValue", input, Value);

                return;
            }

            if (Max.HasValue && newValueAsDecimal > Max.Value)
            {
                newValueAsDecimal = Max.Value;
            }

            if (Min.HasValue && newValueAsDecimal < Min.Value)
            {
                newValueAsDecimal = Min.Value;
            }

            Value = (TValue)ConvertType.ChangeType(newValueAsDecimal, typeof(TValue));
            if (!ValueChanged.HasDelegate)
            {
                await JSRuntime.InvokeAsync <string>("Radzen.setInputValue", input, Value);
            }

            await ValueChanged.InvokeAsync(Value);

            if (FieldIdentifier.FieldName != null)
            {
                EditContext?.NotifyFieldChanged(FieldIdentifier);
            }
            await Change.InvokeAsync(Value);
        }
예제 #5
0
        public async System.Threading.Tasks.Task OnValueChange(decimal value, bool isMin)
        {
            var step = string.IsNullOrEmpty(Step) || Step == "any" ? 1 : decimal.Parse(Step.Replace(",", "."), System.Globalization.CultureInfo.InvariantCulture);

            var newValue = Math.Round((value - MinValue()) / step) * step + MinValue();

            if (Range)
            {
                var oldMinValue = ((IEnumerable)Value).OfType <object>().FirstOrDefault();
                var oldMaxValue = ((IEnumerable)Value).OfType <object>().LastOrDefault();

                var type = typeof(TValue).IsGenericType ? typeof(TValue).GetGenericArguments()[0] : typeof(TValue);
                var convertedNewValue = ConvertType.ChangeType(newValue, type);

                var newValueAsDecimal    = (decimal)ConvertType.ChangeType(newValue, typeof(decimal));
                var oldMaxValueAsDecimal = (decimal)ConvertType.ChangeType(oldMaxValue, typeof(decimal));
                var oldMinValueAsDecimal = (decimal)ConvertType.ChangeType(oldMinValue, typeof(decimal));

                var values = Enumerable.Range(0, 2).Select(i =>
                {
                    if (i == 0)
                    {
                        return(isMin &&
                               !object.Equals(oldMinValue, convertedNewValue) &&
                               newValueAsDecimal >= Min && newValueAsDecimal <= Max &&
                               newValueAsDecimal < oldMaxValueAsDecimal
                                ? convertedNewValue : oldMinValue);
                    }
                    else
                    {
                        return(!isMin &&
                               !object.Equals(oldMaxValue, convertedNewValue) &&
                               newValueAsDecimal >= Min && newValueAsDecimal <= Max &&
                               newValueAsDecimal > oldMinValueAsDecimal
                                ? convertedNewValue : oldMaxValue);
                    }
                }).AsQueryable().Cast(type);

                if (!object.Equals(Value, values))
                {
                    Value = (TValue)values;

                    await ValueChanged.InvokeAsync(Value);

                    if (FieldIdentifier.FieldName != null)
                    {
                        EditContext?.NotifyFieldChanged(FieldIdentifier);
                    }

                    await Change.InvokeAsync(Value);

                    StateHasChanged();
                }
            }
            else
            {
                var valueAsDecimal = Value == null ? 0 : (decimal)ConvertType.ChangeType(Value, typeof(decimal));

                if (!object.Equals(valueAsDecimal, newValue) && newValue >= Min && newValue <= Max)
                {
                    Value = (TValue)ConvertType.ChangeType(newValue, typeof(TValue));

                    await ValueChanged.InvokeAsync(Value);

                    if (FieldIdentifier.FieldName != null)
                    {
                        EditContext?.NotifyFieldChanged(FieldIdentifier);
                    }

                    await Change.InvokeAsync(Value);

                    StateHasChanged();
                }
            }
        }