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" } })"> <GridEvents RowSelected="RowSelectHandler" ContextMenuItemClicked="ContextMenuItemClickedHandler" TValue="Order">GridEvents> <GridColumn Field=@nameof(Order.OrderID) DefaultValue="OrderIDDefaultValue" HeaderText="Order ID" IsPrimaryKey="true" TextAlign="TextAlign.Right" Width="120">GridColumn> <GridColumn Field=@nameof(Order.CustomerID) DefaultValue="CustomerIDDefaultValue" HeaderText="Customer Name" Width="150">GridColumn> public List Orders { get; set; } SfGrid grid { get; set; } public int OrderIDDefaultValue { get; set; } public string CustomerIDDefaultValue { get; set; } public DateTime? OrderDateDefaultValue { get; set; } public double? FreightDefaultValue { get; set; } public async Task ContextMenuItemClickedHandler(ContextMenuClickEventArgs args) if (args.Item.Id == "copyasnewitem") Order toBeCopied = (await this.grid.GetSelectedRecords()).FirstOrDefault(); await this.grid.AddRecord(); public void 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.