Here attached the simplified application. Index.razor is the parent page and inside it has a component with a Syncfusion Grid. Data for this Grid is passing by the parent page Index.razor. What ever data changed inside Grid, after page load, isn't posting back even though changed data inside Index.razor is available after posting.
<GridColumn HeaderText="Policy Number" Width="120" Field="@nameof(ComponentViewModel.PolicyNumber)">
<Template Context="modelContext">
@{
var componentViewModel = (modelContext as ComponentViewModel);
<div class="row">
@*Maintain a unique valued field which cannot be edited*@
<SfTextBox OnInput="(e)=>OnInputPolicyNumber(e,componentViewModel.UniqueField)" Value="@componentViewModel.PolicyNumber"></SfTextBox>
</div>
}
</Template>
</GridColumn>
<GridColumn HeaderText="Policy Type" Width="120" Field="@nameof(ComponentViewModel.PolicyType)">
<Template Context="modelContext">
@{
var componentViewModel = (modelContext as ComponentViewModel);
<div class="row">
@*Pass the unique valued field as argument for OnInput event*@
<SfTextBox OnInput="(e)=>OnInputPolicyType(e,componentViewModel.UniqueField)" Value="@componentViewModel.PolicyType"></SfTextBox>
</div>
}
</Template>
</GridColumn>
public void OnInputPolicyNumber(ChangeEventArgs args, int UniqueField)
{
this.componentViewModels.Where(e => e.UniqueField == UniqueField).FirstOrDefault().PolicyNumber = args.Value.ToString();
}
public void OnInputPolicyType(ChangeEventArgs args, int UniqueField)
{
this.componentViewModels.Where(e => e.UniqueField == UniqueField).FirstOrDefault().PolicyType = args.Value.ToString();
}
|