[성현모] Grid 인덱스 오류 수정

This commit is contained in:
SHM
2025-09-03 14:50:52 +09:00
parent 02f170db5f
commit 32139123ba
4 changed files with 34 additions and 61 deletions

View File

@ -2,7 +2,7 @@
@inject ContextMenuService ContextMenuService @inject ContextMenuService ContextMenuService
<RadzenDataGrid Style="height:calc(100vh - 23rem); font-size: 20px;" TItem="TDataModel" Data="@DataList" AllowPaging PageSize="100" <RadzenDataGrid Style="height:calc(100vh - 23rem); font-size: 20px;" TItem="TDataModel" Data="@DataList" AllowPaging PageSize="@PageSize"
AllowFiltering FilterMode="FilterMode.Advanced" CellRender="@CellRender" AllowFiltering FilterMode="FilterMode.Advanced" CellRender="@CellRender"
SelectionMode="DataGridSelectionMode.Single" @bind-Value="@SelectedRow" SelectionMode="DataGridSelectionMode.Single" @bind-Value="@SelectedRow"
CellContextMenu="@OnCellContextMenu" RowSelect="@SelectRow" RowDoubleClick="@OnRowDoublClick"> CellContextMenu="@OnCellContextMenu" RowSelect="@SelectRow" RowDoubleClick="@OnRowDoublClick">
@ -82,80 +82,42 @@
[Parameter] [Parameter]
public bool HostColumnMerge { get; set; } public bool HostColumnMerge { get; set; }
[Parameter]
public int PageSize { get; set; } = 30;
private IList<TDataModel> SelectedRow; private IList<TDataModel> SelectedRow;
private void CellRender(DataGridCellRenderEventArgs<TDataModel> args) private void CellRender(DataGridCellRenderEventArgs<TDataModel> args)
{ {
if (args.Column.Property == null) if (args.Column.Property == null || !args.Column.Property.ToLower().Equals("testdate"))
return; return;
int index = DataList.ToList().FindIndex(x => x.Equals(args.Data));
//testdate 컬럼일때 날짜 병합 //testdate 컬럼일때 날짜 병합
if (args.Column.Property.ToLower().Equals("testdate")) if (args.Column.Property.ToLower().Equals("testdate"))
{ {
var properties = typeof(TDataModel).GetProperties().ToList(); int rowCount = 0;
var take = DataList.Skip(index).Take(((index / PageSize) + 1) * PageSize - index);
var testDate = properties.Find(x => x.Name.ToLower() == "testdate"); foreach (var r in take)
var host = properties.Find(x => x.Name.ToLower() == "host");
var section = properties.Find(x => x.Name.ToLower() == "section");
if (testDate != null && host != null && section != null)
{ {
var rowTestDate = testDate.GetValue(args.Data); if (r.TestDate.Value.Date == args.Data.TestDate.Value.Date)
var rowHost = host.GetValue(args.Data);
var rowSection = section.GetValue(args.Data);
var data = DataList.First(x => (DateTime?)testDate.GetValue(x) == (DateTime?)rowTestDate);
if (data != null)
{ {
var dataTestDate = testDate.GetValue(data); if (r.ModelName == args.Data.ModelName)
var dataHost = host.GetValue(data);
var dataSection = section.GetValue(data);
if (rowHost == dataHost && rowSection == dataSection)
{ {
int rowCount = DataList.Count(x => (DateTime?)testDate.GetValue(x) == (DateTime?)rowTestDate); rowCount += 1;
}
}
else
{
break;
}
}
args.Attributes.Clear();
if (rowCount > 0)
args.Attributes.Add("rowspan", rowCount); args.Attributes.Add("rowspan", rowCount);
} }
} }
}
}
//host merge 옵션
if (HostColumnMerge == true)
{
if (args.Column.Property.ToLower().Equals("host"))
{
var properties = typeof(TDataModel).GetProperties().ToList();
var testDate = properties.Find(x => x.Name.ToLower() == "testdate");
var host = properties.Find(x => x.Name.ToLower() == "host");
var section = properties.Find(x => x.Name.ToLower() == "section");
if (testDate != null && host != null && section != null)
{
var rowTestDate = testDate.GetValue(args.Data);
var rowHost = host.GetValue(args.Data);
var rowSection = section.GetValue(args.Data);
var data = DataList.First(x => host.GetValue(x).ToString() == rowHost.ToString());
if (data != null)
{
var dataTestDate = testDate.GetValue(data);
var dataHost = host.GetValue(data);
var dataSection = section.GetValue(data);
if (rowHost == dataHost && rowSection == dataSection)
{
int rowCount = DataList.Count(x => host.GetValue(x).ToString() == rowHost.ToString());
args.Attributes.Add("rowspan", rowCount);
}
}
}
}
}
}
private async Task OnCellContextMenu(DataGridCellMouseEventArgs<TDataModel> args) private async Task OnCellContextMenu(DataGridCellMouseEventArgs<TDataModel> args)
{ {
@ -183,7 +145,6 @@
private async Task SelectRow(TDataModel data) private async Task SelectRow(TDataModel data)
{ {
await OnSelectRow.InvokeAsync(data); await OnSelectRow.InvokeAsync(data);
StateHasChanged();
} }
private async Task OnRowDoublClick<T>(DataGridRowMouseEventArgs<T> args) private async Task OnRowDoublClick<T>(DataGridRowMouseEventArgs<T> args)

View File

@ -1,4 +1,6 @@
@page "/tra" @page "/tra"
@rendermode InteractiveServer
@using Web.Tra.Services @using Web.Tra.Services
@inject CPXV2LogService CPXV2LogService @inject CPXV2LogService CPXV2LogService
@inject PopupService PopupService @inject PopupService PopupService
@ -65,6 +67,10 @@
<RadzenLabel Text="Merge By PartNumber"></RadzenLabel> <RadzenLabel Text="Merge By PartNumber"></RadzenLabel>
<RadzenSwitch @bind-Value=@IsMergePartNumberOption></RadzenSwitch> <RadzenSwitch @bind-Value=@IsMergePartNumberOption></RadzenSwitch>
</RadzenStack> </RadzenStack>
<RadzenStack Style="width: 18rem;" Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.SpaceBetween">
<RadzenLabel Text="Page Size"></RadzenLabel>
<RadzenNumeric @bind-Value=@PageSize></RadzenNumeric>
</RadzenStack>
</RadzenStack> </RadzenStack>
</RadzenStack> </RadzenStack>
</RadzenStack> </RadzenStack>
@ -82,7 +88,7 @@
@if (tab.Key == EnumTabs.OverviewC1.ToString()) @if (tab.Key == EnumTabs.OverviewC1.ToString())
{ {
<TraGrid TDataModel="OverviewMerged" DataList="@Overviews" OnClickContextMenu="@OnClickDetailOverviewContextMenu" <TraGrid TDataModel="OverviewMerged" DataList="@Overviews" OnClickContextMenu="@OnClickDetailOverviewContextMenu"
OnSelectRow="@OnSelectRowOverview"> OnSelectRow="@OnSelectRowOverview" PageSize="@PageSize">
</TraGrid> </TraGrid>
} }
@ -115,6 +121,7 @@
private string SelectionStepVersion = string.Empty; private string SelectionStepVersion = string.Empty;
private bool IsMergePartNumberOption = false; private bool IsMergePartNumberOption = false;
private int PageSize = 30;
RadzenTabs tabs; RadzenTabs tabs;
int SelectedTabIndex = 0; int SelectedTabIndex = 0;

View File

@ -2,5 +2,7 @@
{ {
public interface IDataModel public interface IDataModel
{ {
public DateTime? TestDate { get; set; }
public string ModelName { get; set; }
} }
} }

View File

@ -2,6 +2,9 @@
{ {
public class TestHistory : IDataModel public class TestHistory : IDataModel
{ {
public DateTime? TestDate { get; set; }
public string ModelName { get; set; }
public long No { get; set; } public long No { get; set; }
public DateTime TestDateTime { get; set; } public DateTime TestDateTime { get; set; }
public string StationName { get; set; } public string StationName { get; set; }