Dear @enchev @korchev,
I'm using DataGrid dynamic data and I want to using edit inline in the same grid dynamic
I got this issue,
The provided expression contains a SimpleBinaryExpression which is not supported. FieldIdentifier only supports simple member accessors (fields, properties) of an object
Is possible to use DataGrid dynamic data with edit inline?
@enchev Here full example
When Click edit issue appear
@page "/TestDynamicGrid"
@using Radzen.Blazor;
@using System.Collections.Generic;
@using System.Text.RegularExpressions;
@using System.Threading.Tasks;
<RadzenDataGrid TItem="TempParameter" Data="@ListData" @ref="DataGrid" class="w-100"
AllowFiltering="true" AllowPaging="true" AllowSorting="true"
EditMode="DataGridEditMode.Single" RowUpdate="@OnUpdateRow" RowCreate="@OnCreateRow">
<Columns>
<RadzenDataGridColumn TItem="TempParameter" Property="IndexParameter" Title="Index" Width="10%"></RadzenDataGridColumn>
@{
int index = -1;
index++;
}
@for (int j = 0; j < sequences[index].Split(",").Length; j++)
{
int index2 = j;
<RadzenDataGridColumn TItem="TempParameter" Property="@($"Values[{index2}]")" Title="@($"S{index2}")" Width="100px">
<Template Context="row">
@row.Values[index2]
</Template>
<EditTemplate Context="rowEdit">
<RadzenTextBox class="w-100" @bind-Value="@(rowEdit.Values[index2])"></RadzenTextBox>
</EditTemplate>
</RadzenDataGridColumn>
}
<RadzenDataGridColumn TItem="TempParameter" Context="data" Filterable="false" Sortable="false" TextAlign="TextAlign.Right" Width="156px">
<Template Context="data">
<RadzenButton Icon="edit" ButtonStyle="ButtonStyle.Light" Variant="Variant.Flat" Size="ButtonSize.Medium" Click="@(args => EditRow(data))" @onclick:stopPropagation="true">
</RadzenButton>
</Template>
<EditTemplate Context="dataedit">
<RadzenButton Icon="check" ButtonStyle="ButtonStyle.Success" Variant="Variant.Flat" Size="ButtonSize.Medium" Click="@((args) => SaveRow(dataedit))">
</RadzenButton>
<RadzenButton Icon="close" ButtonStyle="ButtonStyle.Light" Variant="Variant.Flat" Size="ButtonSize.Medium" class="my-1 ms-1" Click="@((args) => CancelEdit(dataedit))">
</RadzenButton>
</EditTemplate>
</RadzenDataGridColumn>
</Columns>
</RadzenDataGrid>
@code {
public RadzenDataGrid<TempParameter> DataGrid { get; set; }
public IList<TempParameter> ListData = new List<TempParameter>();
List<string> sequences = new List<string>();
protected override async Task OnInitializedAsync()
{
LoadData();
}
void LoadData()
{
string input = "[S0]B,B,B[/S0][S1]A,A,A[/S1][S2]A,B,A[/S2]";
int index = 0;
foreach (Match match in Regex.Matches(input, @"\[S\d\](.*?)\[/S\d\]"))
{
sequences.Add(match.Groups[1].Value);
string[] values = sequences[index].Split(",");
ListData.Add(new TempParameter { Sequence = match.Groups[1].Value, IndexParameter = index, Values = values });
index++;
}
}
#region Datagrid
TempParameter GridInsert;
async Task InsertRow()
{
GridInsert = new TempParameter();
await DataGrid.InsertRow(GridInsert);
}
async Task EditRow(TempParameter data)
{
await DataGrid.EditRow(data);
}
async Task OnCreateRow(TempParameter data)
{
if (data == GridInsert)
{
GridInsert = null;
}
try
{
// TODO Code to Add
}
catch (System.Exception ex)
{
LoadData();
}
}
async Task OnUpdateRow(TempParameter data)
{
if (data == GridInsert)
{
GridInsert = null;
}
try
{
// TODO Code to Edit
}
catch (System.Exception ex)
{
LoadData();
}
}
async Task SaveRow(TempParameter args)
{
if (args == GridInsert)
{
GridInsert = null;
}
await DataGrid.UpdateRow(args);
}
void CancelEdit(TempParameter args)
{
if (args == GridInsert)
{
GridInsert = null;
}
DataGrid.CancelEditRow(args);
}
#endregion
public class TempParameter
{
public int IndexParameter { get; set; }
public string[] Values { get; set; }
public string Sequence { get; set; }
}
}