I am having a problem submitting a form wrapped in a dialog. When I press the submit button, I get the "An unhandled error has occurred" message. I'm not sure what I am doing wrong. I'm hoping a second eye can help me out.
I know the FormSubmit method is never called. Here is my code:
@page "/add-edit-query-parameter"
@inherits BaseLightwavePage
<PageTitle>Query Parameter</PageTitle>
<RadzenDialog />
<RadzenColumn SizeMD=12>
<RadzenAlert Shade="Shade.Lighter" Variant="Variant.Flat" Size="AlertSize.Small" AlertStyle="AlertStyle.Danger" Visible="@errorVisible">Cannot save QueryParameter</RadzenAlert>
<RadzenTemplateForm TItem="Lightwave.Data.QueryParameter" Data="@queryParameter" Method="post" Visible="@(queryParameter != null)" Submit="@FormSubmit">
<ChildContent>
<RadzenCard>
<RadzenRow style="margin-bottom: 1rem">
<RadzenColumn SizeMD="4">
<RadzenLabel Text="Parameter Name" Component="ParameterName" style="width: 100%" />
</RadzenColumn>
<RadzenColumn SizeMD="8">
<RadzenTextBox style="display: block; width: 100%" @bind-Value="@queryParameter.ParameterName" Name="ParameterName" />
<RadzenRequiredValidator Component="ParameterName" Text="Parameter Name is required" />
</RadzenColumn>
</RadzenRow>
<RadzenRow style="margin-bottom: 1rem">
<RadzenColumn SizeMD="4">
<RadzenLabel Text="Parameter Type" Component="ParameterType" style="width: 100%" />
</RadzenColumn>
<RadzenColumn SizeMD="8">
<RadzenDropDown Data="@queryParameterTypeList" @bind-Value="@queryParameter.ParameterTypeValueString" ValueProperty="StringValue" TextProperty="Name" />
<RadzenRequiredValidator Component="ParameterType" Text="Parameter Type is required" />
</RadzenColumn>
</RadzenRow>
<RadzenRow style="margin-bottom: 1rem">
<RadzenColumn SizeMD="4">
<RadzenLabel Text="Data Type" Component="DataType" style="width: 100%" />
</RadzenColumn>
<RadzenColumn SizeMD="8">
<RadzenDropDown Data="@dataTypeList" @bind-Value="@queryParameter.DataTypeValueString" ValueProperty="StringValue" TextProperty="Name" />
<RadzenRequiredValidator Component="DataType" Text="Data Type is required" />
</RadzenColumn>
</RadzenRow>
<RadzenRow style="margin-bottom: 1rem">
<RadzenColumn SizeMD="4">
<RadzenLabel Text="Label" Component="Label" style="width: 100%" />
</RadzenColumn>
<RadzenColumn SizeMD="8">
<RadzenTextBox style="display: block; width: 100%" @bind-Value="@queryParameter.Label" Name="Label" />
<RadzenRequiredValidator Component="Label" Text="Label is required" />
</RadzenColumn>
</RadzenRow>
<RadzenRow style="margin-bottom: 1rem">
<RadzenColumn SizeMD="4">
<RadzenLabel Text="Dynamic Parameter" Component="DynamicParameter" style="width: 100%" />
</RadzenColumn>
<RadzenColumn SizeMD="8">
<RadzenDropDownDataGrid Data="@dynamicParametersForDynamicParameterId"
AllowClear="true"
TextProperty="DynamicParameterName"
ValueProperty="DynamicParameterId"
Placeholder="Choose DynamicParameter"
style="display: block; width: 100%"
@bind-Value="@queryParameter.DynamicParameterId"
Name="DynamicParameterId"
SelectedValue=@dynamicParametersForDynamicParameterIdValue
Count=@dynamicParametersForDynamicParameterIdCount
LoadData=@dynamicParametersForDynamicParameterIdLoadData />
</RadzenColumn>
</RadzenRow>
<RadzenRow style="margin-bottom: 1rem">
<RadzenColumn SizeMD="4">
<RadzenLabel Text="Required" Component="Required" style="width: 100%" />
</RadzenColumn>
<RadzenColumn SizeMD="8">
<RadzenCheckBox @bind-Value="@queryParameter.Required" Name="Required" />
</RadzenColumn>
</RadzenRow>
<RadzenRow style="margin-bottom: 1rem">
<RadzenColumn SizeMD="4">
<RadzenLabel Text="Display Order" Component="DisplayOrder" style="width: 100%" />
</RadzenColumn>
<RadzenColumn SizeMD="8">
<RadzenNumeric style="display: block; width: 100%" @bind-Value="@queryParameter.DisplayOrder" Name="DisplayOrder" />
</RadzenColumn>
</RadzenRow>
<RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" JustifyContent="JustifyContent.End" Gap="0.5rem">
<RadzenButton ButtonStyle="ButtonStyle.Primary" ButtonType="ButtonType.Submit" Icon="save" Text="Save" Variant="Variant.Flat" />
<RadzenButton ButtonStyle="ButtonStyle.Light" Text="Cancel" Variant="Variant.Flat" Click="@CancelButtonClick" />
</RadzenStack>
</RadzenCard>
</ChildContent>
</RadzenTemplateForm>
</RadzenColumn>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.JSInterop;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using Radzen;
using Radzen.Blazor;
using Lightwave.Common;
using Lightwave.Data;
namespace Lightwave.Client.Pages
{
public partial class AddEditQueryParameter : BaseLightwavePage
{
[Parameter]
public dynamic Mode
{
get;
set;
}
[Parameter]
public dynamic QueryParameter
{
get
{
return queryParameter;
}
set
{
queryParameter = value;
}
}
protected override async Task OnPageInitializedAsync()
{
queryParameter = new QueryParameter();
}
protected bool errorVisible;
protected QueryParameter queryParameter;
protected IEnumerable<DynamicParameter> dynamicParametersForDynamicParameterId;
protected IEnumerable<Lightwave.Data.Query> queriesForQueryId;
protected IEnumerable<EnumValueName> queryParameterTypeList = EnumUtil.GetEnumKeyValues<QueryParameterType>();
protected IEnumerable<EnumValueName> dataTypeList = EnumUtil.GetEnumKeyValues<QueryParameterDataType>();
protected int dynamicParametersForDynamicParameterIdCount;
protected DynamicParameter dynamicParametersForDynamicParameterIdValue;
protected async Task dynamicParametersForDynamicParameterIdLoadData(LoadDataArgs args)
{
try
{
var result = await LightwaveDataService.DynamicParameterDataService.GetDynamicParameters(top: args.Top, skip: args.Skip, count: args.Top != null && args.Skip != null, filter: $"{args.Filter}", orderby: $"{args.OrderBy}");
dynamicParametersForDynamicParameterId = result.Value.AsODataEnumerable();
dynamicParametersForDynamicParameterIdCount = result.Count;
if(!object.Equals(queryParameter.DynamicParameterId, null))
{
var valueResult = await LightwaveDataService.DynamicParameterDataService.GetDynamicParameters(filter: $"DynamicParameterId eq {queryParameter.DynamicParameterId}");
var firstItem = valueResult.Value.FirstOrDefault();
if(firstItem != null)
{
dynamicParametersForDynamicParameterIdValue = firstItem;
}
}
}
catch(System.Exception ex)
{
NotificationService.Notify(new NotificationMessage() { Severity = NotificationSeverity.Error, Summary = $"Error", Detail = $"Unable to load DynamicParameter" });
}
}
protected int queriesForQueryIdCount;
protected Lightwave.Data.Query queriesForQueryIdValue;
protected async Task queriesForQueryIdLoadData(LoadDataArgs args)
{
try
{
var result = await LightwaveDataService.QueryDataService.GetQueries(top: args.Top, skip: args.Skip, count: args.Top != null && args.Skip != null, filter: $"{args.Filter}", orderby: $"{args.OrderBy}");
queriesForQueryId = result.Value.AsODataEnumerable();
queriesForQueryIdCount = result.Count;
if(!object.Equals(queryParameter.QueryId, null))
{
var valueResult = await LightwaveDataService.QueryDataService.GetQueries(filter: $"QueryId eq {queryParameter.QueryId}");
var firstItem = valueResult.Value.FirstOrDefault();
if(firstItem != null)
{
queriesForQueryIdValue = firstItem;
}
}
}
catch(System.Exception ex)
{
NotificationService.Notify(new NotificationMessage() { Severity = NotificationSeverity.Error, Summary = $"Error", Detail = $"Unable to load Query" });
}
}
protected Task FormSubmit()
{
try
{
DialogService.Close(queryParameter);
}
catch(Exception ex)
{
errorVisible = true;
}
return Task.CompletedTask;
}
protected async Task CancelButtonClick(MouseEventArgs args)
{
DialogService.Close(null);
}
}
}
Any help would be greatly appreciated.