Mewriick / Blazor.FlexGrid

GridView component for Blazor
MIT License
199 stars 35 forks source link

Decimal not supported in renderFragment -> BindConverterExtension #90

Closed Methraen closed 4 years ago

Methraen commented 4 years ago

Hello @Mewriick I try to use an input that contains a decimal value but whenever i put a dot or a comma i get the following in explorer console :

blazor.webassembly.js:1 WASM: Unhandled exception rendering component:
WASM: System.NullReferenceException: Object reference not set to an instance of an object.
blazor.webassembly.js:1 WASM:   at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception&)
WASM:   at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) <0x1f91150 + 0x000ce> in <b41cb7146d0848f6ba951b9198c07c3c>:0
blazor.webassembly.js:1 WASM: --- End of stack trace from previous location where exception was thrown ---
WASM:   at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask (System.Threading.Tasks.Task taskToHandle) <0x2742e30 + 0x000c2> in <cbf249d7f04d4fa18d15bfae8ef7f389>:0

Here is my RenderFragment for my decimal input :

Func<EditColumnContext, RenderFragment<TestDto>> editRenderRemun =
      context =>
      {
        RenderFragment<TestDto> remunEdit = (TestDto test) => delegate (RenderTreeBuilder rendererTreeBuilder)
        {
          var internalBuilder = new BlazorRendererTreeBuilder(rendererTreeBuilder);
          internalBuilder
            .OpenElement(HtmlTagNames.Div, "edit-field-wrapper")
            .OpenElement(HtmlTagNames.Input, "edit-text-field")
            .AddAttribute(HtmlAttributes.Type, HtmlAttributes.TypeNumber)
            .AddAttribute(HtmlAttributes.Value, BindConverter.FormatValue(test.RemunerationAnuBru))
            .AddAttribute(HtmlJSEvents.OnChange, EventCallback.Factory.Create(this,
              (ChangeEventArgs e) =>
              {
                context.NotifyValueHasChanged(BindConverterExtensions.ConvertTo(e.Value, decimal.Zero));
              })
            )
            .CloseElement()
            .CloseElement();
        };

        return remunEdit;
      };
Methraen commented 4 years ago

I did not found how to solve this so i got around the problem