improvements

This commit is contained in:
Loretta 2025-11-21 16:28:49 +01:00
parent 44103b9613
commit baaceacdd3
1 changed files with 32 additions and 10 deletions

View File

@ -19,7 +19,7 @@ public interface IMgGridBase : IGrid
}
public abstract class MgGridBase<TSignalRDataSource, TDataItem, TId, TLoggerClient> : DxGrid, IMgGridBase
where TSignalRDataSource : AcSignalRDataSource<TDataItem, TId, List<TDataItem>>
where TSignalRDataSource : AcSignalRDataSource<TDataItem, TId, AcObservableCollection<TDataItem>>
where TDataItem : class, IId<TId>
where TId : struct
where TLoggerClient : AcLoggerBase
@ -31,7 +31,7 @@ public abstract class MgGridBase<TSignalRDataSource, TDataItem, TId, TLoggerClie
protected bool IsFirstInitializeParameterCore;
private TSignalRDataSource? _dataSource = null!;
private List<TDataItem>? _dataSourceParam = [];
private AcObservableCollection<TDataItem>? _dataSourceParam = [];
private string _gridLogName;
public MgGridBase() : base()
@ -115,12 +115,30 @@ public abstract class MgGridBase<TSignalRDataSource, TDataItem, TId, TLoggerClie
}
set
{
_dataSourceParam = value as List<TDataItem>;
_dataSourceParam = value as AcObservableCollection<TDataItem>;
if (_dataSource != null) // && _dataSourceParam is List<TDataItem> workingReferenceList)
_dataSource.SetWorkingReferenceList(_dataSourceParam);
{
SetWorkingReferenceList(_dataSourceParam);
}
}
}
private void SetWorkingReferenceList(AcObservableCollection<TDataItem>? referenceList)
{
_dataSource?.SetWorkingReferenceList(referenceList);
SetGridData(referenceList);
}
public void SetGridData(object? data)
{
if (ReferenceEquals(Data, data)) return;
BeginUpdate();
Data = data;
EndUpdate();
}
protected override async Task OnInitializedAsync()
{
@ -139,7 +157,7 @@ public abstract class MgGridBase<TSignalRDataSource, TDataItem, TId, TLoggerClie
_dataSource.FilterText = FilterText;
//_dataSource = new SignalRDataSource<TDataItem>(SignalRClient, crudTags, ContextIds) { FilterText = FilterText };
Data = _dataSource;
SetGridData(_dataSource.GetReferenceInnerList());
_dataSource.OnDataSourceLoaded += OnDataSourceLoaded;
_dataSource.OnDataSourceItemChanged += OnDataSourceItemChanged;
@ -168,7 +186,11 @@ public abstract class MgGridBase<TSignalRDataSource, TDataItem, TId, TLoggerClie
{
Logger.Debug($"{_gridLogName} OnDataSourceLoaded; Count: {_dataSource?.Count}");
Reload();
//if(_dataSourceParam.GetType() == typeof()AcObservableCollection<TDataItem>)
SetGridData(_dataSource!.GetReferenceInnerList());
//else Reload();
//_dataSource.LoadItem(_dataSource.First().Id).Forget();
return OnDataSourceChanged.InvokeAsync(_dataSource);
}
@ -195,7 +217,7 @@ public abstract class MgGridBase<TSignalRDataSource, TDataItem, TId, TLoggerClie
}
else if (dataItem.Id is int)
{
var newId = -1 * (new Random().Next());
var newId = -1 * AcDomain.NextUniqueInt32;
dataItem.Id = (TId)(_typeConverterId.ConvertTo(newId, typeof(TId)))!;
}
}
@ -302,8 +324,8 @@ public abstract class MgGridBase<TSignalRDataSource, TDataItem, TId, TLoggerClie
if (e.IsNew)
{
if (EditNewRowPosition is GridEditNewRowPosition.FixedOnTop or GridEditNewRowPosition.Top) await InsertDataItemAsync(0, dataItem);
else await AddDataItemAsync(dataItem);
if (EditNewRowPosition is GridEditNewRowPosition.FixedOnTop or GridEditNewRowPosition.Top) await AddDataItemAsync(dataItem);
else await InsertDataItemAsync(0, dataItem);
}
else await UpdateDataItemAsync(dataItem);