How to create and open a new record object in EditForm based on existing row object?

Answer:

We suggest you to set the DefaultValue property of the grid column and then update the row data values to those default value properties in the RowSelected event to achieve your requirement. Further on invoking the AddRecords method without any parameter, it will open the edit form with those default values. Find the below code snippet for your reference.

<SfGrid@ref="grid"DataSource="@Orders"Toolbar="@(new List<string>() { "Add","Edit","Delete","Update","Cancel"})"

        ContextMenuItems="@(new List() { new ContextMenuItemModel { Text = "Copy as new Item", Target = ".e-content", Id = "copyasnewitem" } })">

..

    <GridEventsRowSelected="RowSelectHandler"ContextMenuItemClicked="ContextMenuItemClickedHandler"TValue="Order">GridEvents>

    <GridColumns>

        <GridColumnField=@nameof(Order.OrderID) DefaultValue="OrderIDDefaultValue"HeaderText="Order ID"IsPrimaryKey="true"TextAlign="TextAlign.Right"Width="120">GridColumn>

        <GridColumnField=@nameof(Order.CustomerID) DefaultValue="CustomerIDDefaultValue"HeaderText="Customer Name"Width="150">GridColumn>

..

..

    GridColumns>

SfGrid>

@code{

    public List Orders { get; set; }

    SfGrid grid { get; set; }

    publicint OrderIDDefaultValue { get; set; }

    publicstring CustomerIDDefaultValue { get; set; }

    public DateTime? OrderDateDefaultValue { get; set; }

    publicdouble? FreightDefaultValue { get; set; }

    publicasync Task ContextMenuItemClickedHandler(ContextMenuClickEventArgs args)

    {

        if (args.Item.Id == "copyasnewitem")

        {

            Order toBeCopied = (awaitthis.grid.GetSelectedRecords()).FirstOrDefault();

            if (toBeCopied != null)

            {

                awaitthis.grid.AddRecord();

            }

        }

    }

    publicvoid RowSelectHandler(RowSelectEventArgs args)

    {

        int newOrderId = grid.TotalItemCount + 1;

        OrderIDDefaultValue = grid.TotalItemCount + 1;

        CustomerIDDefaultValue = args.Data.CustomerID;

        OrderDateDefaultValue = args.Data.OrderDate;

        FreightDefaultValue = args.Data.Freight;

    }

}


You can get the sample for creating a copy of existing object in EditForm from here.


Loader.
Up arrow icon