How does add new row work on Data Grid?

Hi,
I implemented a master detail data grid. I am adding a new row to the master data grid and displays on the grid without any problems but when I try to add a record to the detail I am having trouble displaying it on the grid.

Here is the adding record to the master:

private async Task OnCreateRow(OrderDto? order)
    {
        if (order != null)
        {
            orderMap = new Order();
            Mapper.Map(order, orderMap);

            var addedOrder = await AddOrderUseCase.ExecuteAsync(orderMap, user);

            Mapper.Map(addedOrder, order);
            await _grid.UpdateRow(order);
        }
    }

And here is the detail which is not displayed on the grid unless I refresh the page. I tried reloading the grid but no luck.

private async Task OnCreateRowDetail(OrderDetailDto? orderDetail)
    {
        if (orderDetail != null)
        {
            orderDetailMap = new OrderDetail();
            Mapper.Map(orderDetail, orderDetailMap);

            var addedOrderDetail = await AddOrderDetailUseCase.ExecuteAsync(orderDetailMap);

            Mapper.Map(addedOrderDetail, orderDetail);
            await _grid.UpdateRow(orderDetail.OrderDto);
            await _gridDetail.UpdateRow(orderDetail);
            //_orders = await ViewAllOrdersUseCase.ExecuteAsync(user);
            //await _grid.UpdateRow(orderDetail.OrderDto);
            //await _gridDetail.Reload();
            //await _grid.Reload();

        }
    }

Here is the detail grid:

<RadzenDataGrid @ref="_gridDetail" AllowFiltering="@(_detailToInsert == null)" AllowPaging="true" PageSize="15" AllowSorting="@(_detailToInsert == null)" Data="@order.OrderDetailsDto"
                                    TItem="OrderDetailDto" EditMode="DataGridEditMode.Multiple" RowUpdate="@OnUpdateRowDetail" RowCreate="@OnCreateRowDetail" AllowColumnResize="true"
                                    AllowColumnPicking="true" ShowPagingSummary="true" ColumnWidth="150px" Density="Density.Compact">

And no problem on updating details:

private async Task OnUpdateRowDetail(OrderDetailDto orderDetail)
    {
        if (orderDetail == _detailToInsert)
        {
            _detailToInsert = null;
        }
        if (orderDetail != null)
        {
            orderDetailMap = new OrderDetail();
            Mapper.Map(orderDetail, orderDetailMap);

            var updatedOrderDetail = await EditOrderDetailUseCase.ExecuteAsync(orderDetailMap);

            Mapper.Map(updatedOrderDetail, orderDetail);
            
            
        }
    }

Actually, this works to add a new row detail. But how can I keep the row expanded after adding or deleting a row (reload of the grid)?

private async Task OnCreateRowDetail(OrderDetailDto? orderDetail)
    {
        if (orderDetail != null)
        {
            orderDetailMap = new OrderDetail();
            Mapper.Map(orderDetail, orderDetailMap);

            var addedOrderDetail = await AddOrderDetailUseCase.ExecuteAsync(orderDetailMap);

            _orders = await ViewAllOrdersUseCase.ExecuteAsync(user);
            _ordersDto = Mapper.Map(_orders, _ordersDto);

            await _grid.Reload();
            await _gridDetail.Reload();
        }
    }


Check the code generated by default Master/Detail Hierarchy template in Radzen Blazor Studio:
add-detail

What does GetChildData do? I don't understand how it prevents collapsing the row after adding data. Can you please elaborate?

can you please explain @enchev ?

@enchev @korchev I looked at the code but I couldn't understand it, can you explain, please? How can I prevent collapsing the detail row after adding data.

If I change the method like this below, it does not collapse, and the newly added row seems there but when I click on another row and come back to this one, the newly added row is not there. (When I refresh the page, the newly added row becomes visible but the details grid is collapsed.)

private async Task OnCreateRowDetail(OrderDetailDto? orderDetail)
{
    if (orderDetail != null)
    {
        orderDetailMap = new OrderDetail();
        Mapper.Map(orderDetail, orderDetailMap);
    
        var addedOrderDetail = await AddOrderDetailUseCase.ExecuteAsync(orderDetailMap);
      
        Mapper.Map(addedOrderDetail, orderDetail);
        await _gridDetail.UpdateRow(orderDetail);       
       
    }
}

How can I solve this dilemma?