Browse Source

fix errors in MudDataGrid showing data

pull/25235/head
İsmail ÇAĞDAŞ 9 months ago
parent
commit
7d97167652
  1. 342
      framework/src/Volo.Abp.MudBlazorUI/Components/AbpMudExtensibleDataGrid.razor
  2. 37
      framework/src/Volo.Abp.MudBlazorUI/Components/MudEntityAction.razor
  3. 7
      framework/src/Volo.Abp.MudBlazorUI/Components/MudEntityAction.razor.cs

342
framework/src/Volo.Abp.MudBlazorUI/Components/AbpMudExtensibleDataGrid.razor

@ -2,141 +2,283 @@
@using MudBlazor @using MudBlazor
@using Volo.Abp.Data @using Volo.Abp.Data
<MudDataGrid T="TItem" @if (ServerData is not null)
Items="@Data" {
ServerData="@ServerData" <MudDataGrid T="TItem"
Loading="@Loading" ServerData="@ServerData"
Dense="true" Loading="@Loading"
Striped="true" Dense="true"
Bordered="false" Striped="true"
Hover="true" Bordered="false"
Class="@Class"> Hover="true"
<LoadingContent> Class="@Class">
<MudProgressCircular Color="Color.Primary" Indeterminate="true" /> <LoadingContent>
</LoadingContent> <MudProgressCircular Color="Color.Primary" Indeterminate="true" />
<NoRecordsContent> </LoadingContent>
<MudText Typo="Typo.body1" Class="pa-4" Align="Align.Center"> <NoRecordsContent>
@UiLocalizer["NoDataAvailableInDatatable"] <MudText Typo="Typo.body1" Class="pa-4" Align="Align.Center">
</MudText> @UiLocalizer["NoDataAvailableInDatatable"]
</NoRecordsContent> </MudText>
<Columns> </NoRecordsContent>
@if (Columns != null) <Columns>
{ @if (Columns != null)
@foreach (var column in Columns)
{ {
if (column.Actions.Any()) @foreach (var column in Columns)
{ {
var entityActionType = column.Actions.Count == 1 ? MudActionType.Button : MudActionType.Dropdown; if (column.Actions.Any())
<TemplateColumn T="TItem" Title="@column.Title" Sortable="false" CellStyle="@($"width: {ActionColumnWidth}")">
<CellTemplate>
<MudEntityActions Type="entityActionType" TItem="TItem">
@foreach (var action in column.Actions)
{
if (action.ConfirmationMessage != null)
{
<MudEntityAction TItem="TItem"
Color="@GetColor(action.Color)"
Icon="@action.Icon"
Clicked="async () => await action.Clicked(context.Item!)"
ConfirmationMessage="() => action.ConfirmationMessage.Invoke(context.Item!)"
Visible="@(action.Visible != null ? action.Visible(context.Item!) : true)"
Text="@action.Text"
Disabled="@action.Disabled">
</MudEntityAction>
}
else
{
<MudEntityAction TItem="TItem"
Clicked="async () => await action.Clicked(context.Item!)"
Color="@GetColor(action.Color)"
Icon="@action.Icon"
Visible="@(action.Visible != null ? action.Visible(context.Item!) : true)"
Text="@action.Text"
Disabled="@action.Disabled">
</MudEntityAction>
}
}
</MudEntityActions>
</CellTemplate>
</TemplateColumn>
}
else
{
@if (column.Component != null)
{ {
<TemplateColumn T="TItem" Title="@column.Title" Sortable="@column.Sortable" Hidden="@(!column.Visible)" CellStyle="@GetColumnStyle(column)"> var entityActionType = column.Actions.Count == 1 ? MudActionType.Button : MudActionType.Dropdown;
<TemplateColumn T="TItem" Title="@column.Title" Sortable="false" CellStyle="@($"width: {ActionColumnWidth}")">
<CellTemplate> <CellTemplate>
@RenderCustomTableColumnComponent(column.Component, context.Item!) <MudEntityActions Type="entityActionType" TItem="TItem">
@foreach (var action in column.Actions)
{
if (action.ConfirmationMessage != null)
{
<MudEntityAction TItem="TItem"
Color="@GetColor(action.Color)"
Icon="@action.Icon"
Clicked="async () => await action.Clicked(context.Item!)"
ConfirmationMessage="() => action.ConfirmationMessage.Invoke(context.Item!)"
Visible="@(action.Visible != null ? action.Visible(context.Item!) : true)"
Text="@action.Text"
Disabled="@action.Disabled">
</MudEntityAction>
}
else
{
<MudEntityAction TItem="TItem"
Clicked="async () => await action.Clicked(context.Item!)"
Color="@GetColor(action.Color)"
Icon="@action.Icon"
Visible="@(action.Visible != null ? action.Visible(context.Item!) : true)"
Text="@action.Text"
Disabled="@action.Disabled">
</MudEntityAction>
}
}
</MudEntityActions>
</CellTemplate> </CellTemplate>
</TemplateColumn> </TemplateColumn>
} }
else else
{ {
if (!ExtensionPropertiesRegex.IsMatch(column.Data)) @if (column.Component != null)
{
<TemplateColumn T="TItem" Title="@column.Title" Sortable="@column.Sortable" Hidden="@(!column.Visible)" CellStyle="@GetColumnStyle(column)">
<CellTemplate>
@RenderCustomTableColumnComponent(column.Component, context.Item!)
</CellTemplate>
</TemplateColumn>
}
else
{ {
@if (column.ValueConverter == null) if (!ExtensionPropertiesRegex.IsMatch(column.Data))
{ {
<PropertyColumn T="TItem" TProperty="object" Property="@(x => GetPropertyValue(x, column.Data))" Title="@column.Title" Sortable="@column.Sortable" Hidden="@(!column.Visible)" CellStyle="@GetColumnStyle(column)" /> @if (column.ValueConverter == null)
{
<PropertyColumn T="TItem" TProperty="object" Property="@(x => GetPropertyValue(x, column.Data))" Title="@column.Title" Sortable="@column.Sortable" Hidden="@(!column.Visible)" CellStyle="@GetColumnStyle(column)" />
}
else
{
<TemplateColumn T="TItem" Title="@column.Title" Sortable="@column.Sortable" Hidden="@(!column.Visible)" CellStyle="@GetColumnStyle(column)">
<CellTemplate>
@((MarkupString)GetConvertedFieldValue(context.Item, column))
</CellTemplate>
</TemplateColumn>
}
} }
else else
{ {
<TemplateColumn T="TItem" Title="@column.Title" Sortable="@column.Sortable" Hidden="@(!column.Visible)" CellStyle="@GetColumnStyle(column)"> <TemplateColumn T="TItem" Title="@column.Title" SortBy="@GetExtensionPropertySortFunc(column)" Hidden="@(!column.Visible)" CellStyle="@GetColumnStyle(column)">
<CellTemplate> <CellTemplate>
@((MarkupString)GetConvertedFieldValue(context.Item, column)) @{
</CellTemplate> var entity = context.Item as IHasExtraProperties;
</TemplateColumn> var propertyName = ExtensionPropertiesRegex.Match(column.Data).Groups[1].Value;
} var propertyValue = entity?.GetProperty(propertyName);
} if (propertyValue != null && propertyValue.GetType() == typeof(bool))
else
{
<TemplateColumn T="TItem" Title="@column.Title" SortBy="@GetExtensionPropertySortFunc(column)" Hidden="@(!column.Visible)" CellStyle="@GetColumnStyle(column)">
<CellTemplate>
@{
var entity = context.Item as IHasExtraProperties;
var propertyName = ExtensionPropertiesRegex.Match(column.Data).Groups[1].Value;
var propertyValue = entity?.GetProperty(propertyName);
if (propertyValue != null && propertyValue.GetType() == typeof(bool))
{
if ((bool)propertyValue)
{ {
<MudIcon Icon="@Icons.Material.Filled.Check" Color="Color.Success" /> if ((bool)propertyValue)
{
<MudIcon Icon="@Icons.Material.Filled.Check" Color="Color.Success" />
}
else
{
<MudIcon Icon="@Icons.Material.Filled.Close" Color="Color.Error" />
}
} }
else else
{ {
<MudIcon Icon="@Icons.Material.Filled.Close" Color="Color.Error" /> if (column.ValueConverter != null)
{
@((MarkupString)GetConvertedFieldValue(context.Item, column))
}
else
{
if (column.DisplayFormat == null)
{
@(propertyValue)
}
else
{
@(string.Format(column.DisplayFormatProvider, column.DisplayFormat, propertyValue))
}
}
} }
} }
</CellTemplate>
</TemplateColumn>
}
}
}
}
}
</Columns>
<PagerContent>
@if (ShowPager)
{
<MudDataGridPager T="TItem" />
}
</PagerContent>
</MudDataGrid>
}
else
{
<MudDataGrid T="TItem"
Items="@Data"
Loading="@Loading"
Dense="true"
Striped="true"
Bordered="false"
Hover="true"
Class="@Class">
<LoadingContent>
<MudProgressCircular Color="Color.Primary" Indeterminate="true" />
</LoadingContent>
<NoRecordsContent>
<MudText Typo="Typo.body1" Class="pa-4" Align="Align.Center">
@UiLocalizer["NoDataAvailableInDatatable"]
</MudText>
</NoRecordsContent>
<Columns>
@if (Columns != null)
{
@foreach (var column in Columns)
{
if (column.Actions.Any())
{
var entityActionType = column.Actions.Count == 1 ? MudActionType.Button : MudActionType.Dropdown;
<TemplateColumn T="TItem" Title="@column.Title" Sortable="false" CellStyle="@($"width: {ActionColumnWidth}")">
<CellTemplate>
<MudEntityActions Type="entityActionType" TItem="TItem">
@foreach (var action in column.Actions)
{
if (action.ConfirmationMessage != null)
{
<MudEntityAction TItem="TItem"
Color="@GetColor(action.Color)"
Icon="@action.Icon"
Clicked="async () => await action.Clicked(context.Item!)"
ConfirmationMessage="() => action.ConfirmationMessage.Invoke(context.Item!)"
Visible="@(action.Visible != null ? action.Visible(context.Item!) : true)"
Text="@action.Text"
Disabled="@action.Disabled">
</MudEntityAction>
}
else else
{ {
if (column.ValueConverter != null) <MudEntityAction TItem="TItem"
Clicked="async () => await action.Clicked(context.Item!)"
Color="@GetColor(action.Color)"
Icon="@action.Icon"
Visible="@(action.Visible != null ? action.Visible(context.Item!) : true)"
Text="@action.Text"
Disabled="@action.Disabled">
</MudEntityAction>
}
}
</MudEntityActions>
</CellTemplate>
</TemplateColumn>
}
else
{
@if (column.Component != null)
{
<TemplateColumn T="TItem" Title="@column.Title" Sortable="@column.Sortable" Hidden="@(!column.Visible)" CellStyle="@GetColumnStyle(column)">
<CellTemplate>
@RenderCustomTableColumnComponent(column.Component, context.Item!)
</CellTemplate>
</TemplateColumn>
}
else
{
if (!ExtensionPropertiesRegex.IsMatch(column.Data))
{
@if (column.ValueConverter == null)
{
<PropertyColumn T="TItem" TProperty="object" Property="@(x => GetPropertyValue(x, column.Data))" Title="@column.Title" Sortable="@column.Sortable" Hidden="@(!column.Visible)" CellStyle="@GetColumnStyle(column)" />
}
else
{
<TemplateColumn T="TItem" Title="@column.Title" Sortable="@column.Sortable" Hidden="@(!column.Visible)" CellStyle="@GetColumnStyle(column)">
<CellTemplate>
@((MarkupString)GetConvertedFieldValue(context.Item, column))
</CellTemplate>
</TemplateColumn>
}
}
else
{
<TemplateColumn T="TItem" Title="@column.Title" SortBy="@GetExtensionPropertySortFunc(column)" Hidden="@(!column.Visible)" CellStyle="@GetColumnStyle(column)">
<CellTemplate>
@{
var entity = context.Item as IHasExtraProperties;
var propertyName = ExtensionPropertiesRegex.Match(column.Data).Groups[1].Value;
var propertyValue = entity?.GetProperty(propertyName);
if (propertyValue != null && propertyValue.GetType() == typeof(bool))
{ {
@((MarkupString)GetConvertedFieldValue(context.Item, column)) if ((bool)propertyValue)
{
<MudIcon Icon="@Icons.Material.Filled.Check" Color="Color.Success" />
}
else
{
<MudIcon Icon="@Icons.Material.Filled.Close" Color="Color.Error" />
}
} }
else else
{ {
if (column.DisplayFormat == null) if (column.ValueConverter != null)
{ {
@(propertyValue) @((MarkupString)GetConvertedFieldValue(context.Item, column))
} }
else else
{ {
@(string.Format(column.DisplayFormatProvider, column.DisplayFormat, propertyValue)) if (column.DisplayFormat == null)
{
@(propertyValue)
}
else
{
@(string.Format(column.DisplayFormatProvider, column.DisplayFormat, propertyValue))
}
} }
} }
} }
} </CellTemplate>
</CellTemplate> </TemplateColumn>
</TemplateColumn> }
} }
} }
} }
} }
} </Columns>
</Columns> <PagerContent>
<PagerContent> @if (ShowPager)
@if (ShowPager) {
{ <MudDataGridPager T="TItem" />
<MudDataGridPager T="TItem" /> }
} </PagerContent>
</PagerContent> </MudDataGrid>
</MudDataGrid> }

37
framework/src/Volo.Abp.MudBlazorUI/Components/MudEntityAction.razor

@ -3,31 +3,30 @@
@if (Visible && HasPermission) @if (Visible && HasPermission)
{ {
if (ParentActions.Type == MudActionType.Dropdown) if (ParentActions != null)
{ {
if (Primary == false) if (ParentActions.Type == MudActionType.Dropdown)
{ {
<MudMenuItem OnClick="@ActionClickedAsync" Disabled="@Disabled"> if (Primary == false)
{
<MudMenuItem OnClick="@ActionClickedAsync" Disabled="@Disabled">
@if (!string.IsNullOrEmpty(Icon))
{
<MudIcon Icon="@Icon" Class="me-2" Size="Size.Small" />
}
@Text
</MudMenuItem>
}
}
else
{
<MudButton Color="@Color" Variant="Variant.Text" OnClick="@ActionClickedAsync" Disabled="@Disabled" Size="Size.Small">
@if (!string.IsNullOrEmpty(Icon)) @if (!string.IsNullOrEmpty(Icon))
{ {
<MudIcon Icon="@Icon" Class="me-2" Size="Size.Small" /> <MudIcon Icon="@Icon" Class="@(Text.IsNullOrEmpty() ? "" : "me-1")" Size="Size.Small" />
} }
@Text @Text
</MudMenuItem> </MudButton>
} }
} }
else
{
<MudButton Color="@Color"
Variant="Variant.Text"
OnClick="@ActionClickedAsync"
Disabled="@Disabled"
Size="Size.Small">
@if (!string.IsNullOrEmpty(Icon))
{
<MudIcon Icon="@Icon" Class="@(Text.IsNullOrEmpty() ? "" : "me-1")" Size="Size.Small" />
}
@Text
</MudButton>
}
} }

7
framework/src/Volo.Abp.MudBlazorUI/Components/MudEntityAction.razor.cs

@ -40,7 +40,7 @@ public partial class MudEntityAction<TItem> : ComponentBase
public string? Icon { get; set; } public string? Icon { get; set; }
[CascadingParameter] [CascadingParameter]
public MudEntityActions<TItem> ParentActions { get; set; } = default!; public MudEntityActions<TItem>? ParentActions { get; set; } = default!;
[Inject] [Inject]
protected IAuthorizationService AuthorizationService { get; set; } = default!; protected IAuthorizationService AuthorizationService { get; set; } = default!;
@ -60,7 +60,10 @@ public partial class MudEntityAction<TItem> : ComponentBase
} }
#pragma warning restore CS0618 #pragma warning restore CS0618
ParentActions.AddAction(this); if (ParentActions != null)
{
ParentActions.AddAction(this);
}
} }
protected internal virtual async Task ActionClickedAsync() protected internal virtual async Task ActionClickedAsync()

Loading…
Cancel
Save