public Action <IRendererTreeBuilder> BuildRendererTree <TItem>(IActualItemContext <TItem> actualItemContext, FormField field, string localColumnName) where TItem : class { var value = actualItemContext.GetActualItemColumnValue(localColumnName); var valueExpression = GetValueExpression(actualItemContext.ActualItem, field); var convertedValue = ConvertToDateTime(value); actualItemContext.SetActualItemColumnValue(localColumnName, convertedValue); return(builder => { builder .OpenElement(HtmlTagNames.Div, "form-field-wrapper") .OpenComponent(typeof(InputDate <>).MakeGenericType(field.Type)) .AddAttribute("id", $"create-form-{localColumnName}") .AddAttribute("class", "edit-text-field") .AddAttribute("Value", convertedValue) .AddAttribute("ValueExpression", valueExpression); if (field.UnderlyingType == typeof(DateTime)) { if (field.IsNullable) { builder .AddAttribute("ValueChanged", _eventCallbackFactory.Create <DateTime?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v))) .CloseComponent() .AddValidationMessage <DateTime?>(valueExpression); } else { builder .AddAttribute("ValueChanged", _eventCallbackFactory.Create <DateTime>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v))) .CloseComponent() .AddValidationMessage <DateTime>(valueExpression); } } else { if (field.IsNullable) { builder .AddAttribute("ValueChanged", _eventCallbackFactory.Create <DateTimeOffset?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v))) .CloseComponent() .AddValidationMessage <DateTimeOffset?>(valueExpression); } else { builder .AddAttribute("ValueChanged", _eventCallbackFactory.Create <DateTimeOffset>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v))) .CloseComponent() .AddValidationMessage <DateTimeOffset>(valueExpression); } } builder.CloseElement(); }); }
public Action <IRendererTreeBuilder> BuildRendererTree <TItem>(IActualItemContext <TItem> actualItemContext, FormField field) where TItem : class { var localColumnName = actualItemContext.ActualColumnName; var value = actualItemContext.GetActualItemColumnValue(localColumnName); var valueExpression = GetValueExpression(actualItemContext.ActualItem, field); return(builder => { builder .OpenElement(HtmlTagNames.Div, "form-field-wrapper") .OpenComponent(typeof(InputNumber <>).MakeGenericType(field.Type)) .AddAttribute("Id", $"create-form-{localColumnName}") .AddAttribute("Class", "edit-text-field") .AddAttribute("Value", value) .AddAttribute("ValueExpression", valueExpression); if (field.UnderlyneType == typeof(int)) { if (field.IsNullable) { builder .AddAttribute("ValueChanged", eventCallbackFactory.Create <int?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v))) .CloseComponent() .AddValidationMessage <int?>(valueExpression); } else { builder .AddAttribute("ValueChanged", eventCallbackFactory.Create <int>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v))) .CloseComponent() .AddValidationMessage <int>(valueExpression); } } else if (field.UnderlyneType == typeof(long)) { if (field.IsNullable) { builder .AddAttribute("ValueChanged", eventCallbackFactory.Create <long?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v))) .CloseComponent() .AddValidationMessage <long?>(valueExpression); } else { builder .AddAttribute("ValueChanged", eventCallbackFactory.Create <long>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v))) .CloseComponent() .AddValidationMessage <long>(valueExpression); } } else if (field.UnderlyneType == typeof(decimal)) { if (field.IsNullable) { builder .AddAttribute("ValueChanged", eventCallbackFactory.Create <decimal?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v))) .CloseComponent() .AddValidationMessage <decimal?>(valueExpression); } else { builder .AddAttribute("ValueChanged", eventCallbackFactory.Create <decimal>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v))) .CloseComponent() .AddValidationMessage <decimal>(valueExpression); } } else if (field.UnderlyneType == typeof(double)) { if (field.IsNullable) { builder .AddAttribute("ValueChanged", eventCallbackFactory.Create <double?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v))) .CloseComponent() .AddValidationMessage <double?>(valueExpression); } else { builder .AddAttribute("ValueChanged", eventCallbackFactory.Create <double>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v))) .CloseComponent() .AddValidationMessage <double>(valueExpression); } } else if (field.UnderlyneType == typeof(float)) { if (field.IsNullable) { builder .AddAttribute("ValueChanged", eventCallbackFactory.Create <float?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v))) .CloseComponent() .AddValidationMessage <float?>(valueExpression); } else { builder .AddAttribute("ValueChanged", eventCallbackFactory.Create <float>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v))) .CloseComponent() .AddValidationMessage <float>(valueExpression); } } builder.CloseElement(); }); }
public Action <IRendererTreeBuilder> BuildRendererTree <TItem>(IActualItemContext <TItem> actualItemContext, FormField field) where TItem : class { var localColumnName = actualItemContext.ActualColumnName; var value = actualItemContext.GetActualItemColumnValue(localColumnName); var valueExpression = GetValueExpression(actualItemContext.ActualItem, field); return(builder => { builder .OpenElement(HtmlTagNames.Div, "checkbox") .OpenElement(HtmlTagNames.Label) .OpenComponent(typeof(InputCheckbox)) .AddAttribute("Id", $"create-form-{localColumnName}") .AddAttribute("Class", string.Empty) .AddAttribute("Value", value) .AddAttribute("ValueExpression", valueExpression); if (field.IsNullable) { builder.AddAttribute("ValueChanged", eventCallbackFactory.Create <bool?>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v))); } else { builder.AddAttribute("ValueChanged", eventCallbackFactory.Create <bool>(this, v => actualItemContext.SetActualItemColumnValue(localColumnName, v))); } builder .CloseComponent() .OpenElement(HtmlTagNames.Span, "cr") .OpenElement(HtmlTagNames.I, "cr-icon fa fa-check") .CloseElement() .CloseElement() .CloseElement() .CloseElement(); if (field.IsNullable) { builder.AddValidationMessage <bool?>(valueExpression); } else { builder.AddValidationMessage <bool>(valueExpression); } }); }
private LambdaExpression GetValueExpression(object actualItem, FormField field) { if (field.UnderlyneType == typeof(int)) { if (field.IsNullable) { return(Expression.Lambda <Func <int?> >( Expression.Property( Expression.Constant(actualItem), field.Info))); } else { return(Expression.Lambda <Func <int> >( Expression.Property( Expression.Constant(actualItem), field.Info))); } } else if (field.UnderlyneType == typeof(long)) { if (field.IsNullable) { return(Expression.Lambda <Func <long?> >( Expression.Property( Expression.Constant(actualItem), field.Info))); } else { return(Expression.Lambda <Func <long> >( Expression.Property( Expression.Constant(actualItem), field.Info))); } } else if (field.UnderlyneType == typeof(decimal)) { if (field.IsNullable) { return(Expression.Lambda <Func <decimal?> >( Expression.Property( Expression.Constant(actualItem), field.Info))); } else { return(Expression.Lambda <Func <decimal> >( Expression.Property( Expression.Constant(actualItem), field.Info))); } } else if (field.UnderlyneType == typeof(double)) { if (field.IsNullable) { return(Expression.Lambda <Func <double?> >( Expression.Property( Expression.Constant(actualItem), field.Info))); } else { return(Expression.Lambda <Func <double> >( Expression.Property( Expression.Constant(actualItem), field.Info))); } } else if (field.UnderlyneType == typeof(float)) { if (field.IsNullable) { return(Expression.Lambda <Func <float?> >( Expression.Property( Expression.Constant(actualItem), field.Info))); } else { return(Expression.Lambda <Func <float> >( Expression.Property( Expression.Constant(actualItem), field.Info))); } } throw new ArgumentException($"{nameof(NumberInputBuilder)} does not support type {field.UnderlyneType}"); }
public Action <IRendererTreeBuilder> BuildRendererTree <TItem>(IActualItemContext <TItem> actualItemContext, FormField field, string columnName) where TItem : class { var value = actualItemContext.GetActualItemColumnValue(columnName); var valueExpression = Expression.Lambda <Func <string> >( Expression.Property( Expression.Constant(actualItemContext.ActualItem), field.Info)); return(builder => { builder .OpenElement(HtmlTagNames.Div, "form-field-wrapper") .OpenComponent(typeof(InputText)) .AddAttribute("id", $"create-form-{columnName}") .AddAttribute("class", "edit-text-field") .AddAttribute("Value", value) .AddAttribute("ValueExpression", valueExpression) .AddAttribute("ValueChanged", _eventCallbackFactory.Create <string>(this, v => actualItemContext.SetActualItemColumnValue(columnName, v))) .CloseComponent() .AddValidationMessage <string>(valueExpression) .CloseElement(); }); }