Declined
Last Updated: 15 Jun 2023 21:58 by ADMIN
Oodi
Created on: 01 Jun 2023 03:36
Category: UI for Blazor
Type: Bug Report
0
Grid Columns of type Decimal? always null

Hi 

I am trying to do very simple InCell editing of various columns string etc. In my model i have various Decimal? types fields. When i update the grid incell  the

OnUpdate event fires but the property value is always null. Its like its not biding properly. Seems like you have had similar to this bug in previous versions. Seems like a very simple functionality that the grid should support.

Also it doesn't allow me to enter more than 1 digit after this also as if i type a decimal point it jsut clears it.

I have added a video showing this behaviour. 

Please assist.  This is the Grid code below.

 

 @if (_stockOrderLinePOCO != null)
                                    {
                                    <TelerikGrid @ref="_stockOrderLineGrid"
                                                     Width="@AppStateService.ViewPortWidth"
                                                     Height="100%"
                                                     Data=@_stockOrderLinePOCO.Current
                                                     Sortable="@false"
                                                     FilterMode="@GridFilterMode.None"
                                                     Pageable="true"
                                                     Groupable="false"
                                                     PageSize="@AppSettings.Value.DataPageSize"
                                                     Resizable="true"
                                                     Reorderable="false"
                                                     EditMode="GridEditMode.Incell"
                                                     PageChanged="@StockOrderLineGridPageChangedHandler"
                                             OnRowRender="@StockOrderLineGridRowRenderHandler"
                                             OnUpdate="@StockOrderLineGridUpdateHandler" OnEdit="@StockOrderLineGridEditHandler" OnCancel="@StockOrderLineGridCancelHandler" OnDelete="@StockOrderLineGridDeleteHandler" OnStateInit="@((GridStateEventArgs<StockOrderLine> args) => OnStockOrderLineStateInitHandler(args))">
                                            <GridColumns>
                                            @{
                                                    foreach(PropertyInfo prop in (typeof(StockOrderLine)).GetProperties())
                                                    {
                                                        switch (prop.Name)
                                                        {
                                                            case "ID":
                                                                <GridColumn Field=@prop.Name Title=@Localizer["Line"] FieldType=@prop.GetType() Editable="false"> Width="1rem"</GridColumn>
                                                                break;

                                                            case "ProductID":
                                                                <GridColumn Field=@prop.Name Title=@Localizer["Product"] FieldType=@prop.GetType() Editable="true" Width="40rem">
                                                                <Template>
                                                                    @{
                                                                        CurrentlyEditedStockOrderLine = context as StockOrderLine;

                                                                        @CurrentlyEditedStockOrderLine.ProductID  @CurrentlyEditedStockOrderLine.ProductDescription
                                                                    }
                                                                </Template>
                                                                <EditorTemplate>
                                                                    @{
                                                                        CurrentlyEditedStockOrderLine = context as StockOrderLine;

                                                                        <div class="row">
                                                                            <div class="col mr-0">
                                                                                <TelerikComboBox @bind-Value="CurrentlyEditedStockOrderLine.ProductID" Data="@_priceListProducts" TextField="ProductID" ValueField="ProductID" FillMode=@ThemeConstants.DropDownList.FillMode.Outline Filterable="true">
                                                                                    <ItemTemplate Context="subContext">
                                                                                        @subContext.ProductID  @subContext.Description_en_AU
                                                                                    </ItemTemplate>
                                                                                </TelerikComboBox>
                                                                            </div>
                                                                            <div class="col ml-0">
                                                                                <TelerikButton class="mb-0 ml-0" ButtonType="ButtonType.Button" Size="lg" FillMode="outline" Icon="search" @onclick="LookupItem">
                                                                                </TelerikButton>
                                                                            </div>
                                                                        </div>
                                                                    }
                                                                </EditorTemplate>
                                                            </GridColumn>
                                                            break;

                                                        case "ProductDescription":
                                                            <GridColumn Field=@prop.Name Title=@Localizer["Description"] FieldType=@prop.GetType() Editable="true"> </GridColumn>
                                                                break;

                                                        case "QuantityOrdered":
                                                            <GridColumn Field=@prop.Name Title=@Localizer["Qty"] FieldType=@prop.GetType() Editable="true"></GridColumn>
                                                            break;

                                                        case "SalePrice":
                                                            <GridColumn Field=@prop.Name Title=@Localizer["Price"] FieldType=@prop.GetType() Editable="true"></GridColumn>
                                                            break;

                                                        case "Value":
                                                            <GridColumn Field=@prop.Name Title=@Localizer["Amount"] FieldType=@prop.GetType() Editable="false"></GridColumn>
                                                            break;

                                                            default:
                                                                break;
                                                        }
                                                    }

                                                <GridCommandColumn Width="4rem">
                                                        <GridCommandButton Command="Delete" Icon="delete"></GridCommandButton>
                                                    </GridCommandColumn>
                                            }
                                            </GridColumns>
                                        </TelerikGrid>
                                    }

 

3 comments
ADMIN
Hristian Stefanov
Posted on: 15 Jun 2023 21:58

Hi Oodi,

Thank you for your exceptional patience throughout the duration of my investigations. The process took longer than anticipated due to the workload in recent days.

After extensive exploration, I can now confirm that the current behavior is an actual specificity of Grid with nullable ExpandoObjects rather than a bug. This specificity arises from the Grid current mechanism.

Therefore, to fix the problem here, please refer to the documentation note, which provides more details: If any property in the ExpandoObject is nullable, then do not set EditorType or use the default one for the column. Instead, use a Grid column EditorTemplate.

If you encounter any further challenges, I remain available to assist you.

Regards,
Hristian Stefanov
Progress Telerik

As of R2 2023, the default icon type will be SVG instead of Font. See this blogpost for more information.
Oodi
Posted on: 14 Jun 2023 09:48
Any updates?
ADMIN
Hristian Stefanov
Posted on: 07 Jun 2023 15:57

Hi Oodi,

Thank you for providing me with the Grid configuration and a video.

I am currently in the process of reproducing the issue and actively working towards finding the source of it.

Rest assured, I will promptly provide you with further information very shortly.

I sincerely appreciate your patience during this time, as it is highly valued.

Regards,
Hristian Stefanov
Progress Telerik

As of R2 2023, the default icon type will be SVG instead of Font. See this blogpost for more information.